2015-02-01 4 views
0

Cakephp의 RESTful 서비스는 "/recipes.json"또는 "/recipes/123.json"과 같은 "URL.format"형식의 URL로 사용할 수 있습니다. 백본으로 JS의 모델 또는 컬렉션은 "URL"형식을 사용하여 RESTful 서비스에 액세스합니다. 예 : "/ recipes"또는 "/ recipes/123" Cakephp의 RESTful 서비스를 사용하기 위해 백본 모델 또는 컬렉션을 어떻게 구성 할 수 있습니까? 이제이 모델 "ParentModel는"다른 모델에 상속Backbonejs에서 RESTful Cakephp 서비스 사용하기

var ParentModel = Backbone.Model.extend({ 
    sync: function(method, model, options) { 
     options.url = model.url() + '.json'; 
     return Backbone.sync(method, model, options); 
    } 
}); 

아래와 같이

+0

변경 내용 백본 URL을'' "/recipes.json" "', 다음은 몇 가지 대답'http://stackoverflow.com/questions/9431673/load-data-into-a-backbone-collection -from-json-file – Salines

+0

@Salines url이 "/recipes.json"일 때 id : 123의 특정 제조법을 검색하려면 url은 "/recipes.json/123"으로 형성됩니다. cakephp에 필요한 것은 "/recipes/123.json" – Kumaran

답변

0

나는 업데이트의 동기화 방법과 모델을 만들었습니다. 즉, 하위 모델에서 sync/fetch/save가 호출되면 url에 형식 문자열이 올바르게 추가됩니다.

다른 솔루션도 환영합니다. 언제든지 솔루션을 제공하거나 개선을 제안하십시오.

+0

'sync '를 오버라이드하는 것은 당신이하려는 일에 약간 과잉이라고 생각합니다. 백본은'url()'및/또는'urlRoot()'메소드를 오버라이드함으로써 말하고자하는 끝점을 기술하는 잘 구조화 된 방법을 가지고 있습니다. –

0

Backbone.sync을 무시하면 친구가 합리적인 해결책처럼 보일 수 있지만 읽음/쓰기/삭제 유스 케이스를 직접 지원해야한다는 의미입니다. 귀하의 경우에는, 당신이 원하는 논리를 제공하기 위해 url()urlRoot() 메서드를 재정의하는 것이 좋습니다. 그것은 다음 '.json'추가 기본 방법 &를 사용하는 것이 아마도 가장 간단한이다 : 컬렉션의 경우

var FooModel = Backbone.Model.extend({ 
    url: function() { 
      var url = Backbone.Model.prototype.url.call(this); 
      return url + '.json'; 
    }, 

    urlRoot: function() { 
     return '/foo'; 
    } 
}); 

을 직접 URL을 제공 할 수

var FooCollection = Backbone.Collection.extend({ 
    model: FooModel, 
    url: function() { 
     return '/foo.json'; 
    } 
}); 

이 모두이 모델을 사용하는 방법을 허용을 같은 컬렉션의 외부 :

,536 :

var model = new FooModel({ id: 50, name: 'foo50'}); 
model.url(); // <<=== returns '/foo/50.json' 

그것은 또한 같은, 너무 모델을 관리하기 위해 컬렉션을 사용할 수 있습니다

var collection = new FooCollection([ { id: 30, name: 'foo30' } ]); 
collection.url(); // <<=== returns '/foo.json' 

var foo30 = collection.get(30); 
foo30.url(); // <<=== returns '/foo/30.json' 
+0

동기화/가져 오기가 모델에서 호출 된 경우이 메서드가 작동합니다. 이 접근법을 컬렉션에 사용하려면 어떻게해야합니까? 컬렉션의 경우 url 속성은 실제 URL을 올바르게 지정하거나 반환해야합니다. – Kumaran

+0

샘플 코드를 업데이트하여 Collection과 함께 사용하는 방법을 더 잘 보여줍니다. 원래의 질문에 그 세부 사항을 보지 못해 사과드립니다! –