2013-02-27 2 views
6

Cake Book 예제를 거의 정확히 따라야합니다.CakePHP REST 기본 매핑이 예상대로 작동하지 않습니다.

Router::mapResources('incidentReports'); 
Router::parseExtensions('json'); 

모두 이전

require CAKE . 'Config' . DS . 'routes.php'; 

URL로가는 기능

index() 
view($id) 
add() 
edit($id) 
delete($id) 

을 포함 IncidentReportsController

class IncidentReportsController extends AppController { 

라는 내 컨트롤러

www.myurl.com/incidentReports.json 

예상대로 index() 함수에 요청을 보냅니다.

뷰() 함수에 매핑해야하는 URL

www.myurl.com/incidentReports/260.json 

에가는하지만 존재하지 않는 260() 함수에 매핑 할려고.

www.myurl.com/incidentReports/view/260.json 

view() 함수에 매핑되어 제대로 작동합니다. 그러나, 내 이해는 URL의 "보기"는 필요하지 않아야합니다.

+1

App- 또는 IncidentReportsController에 'RequestHandlerComponent'를 포함 시켰습니까? – nahri

+0

거기에. 그러나 그 아이디어에 감사드립니다. – user2004338

+0

요청을 어떻게 시도 했습니까? 브라우저로? Postman (Google Chrome Browser App)과 같은 나머지 고객과 함께 이미 사용해 보셨습니까? 또 다른 문제점은 RequestHandler가 HTTP 요청에서'Accept' 헤더 만 보는 것일 수 있습니다. 여기서'Accept : application/json'이 필요하거나'RequestHandler'가 정상적인 GET 요청으로 취급 할 것입니다. – nahri

답변

0

documentation에 따르면 모든 것을 올바르게 수행 했으므로 확실하지 않습니다. 이 경로 (사용하도록 설정해야하는 경로)도 경로에 넣으십시오.

Router::resourceMap(array(
    array('action' => 'index', 'method' => 'GET', 'id' => false), 
    array('action' => 'view', 'method' => 'GET', 'id' => true), 
    array('action' => 'add', 'method' => 'POST', 'id' => false), 
    array('action' => 'edit', 'method' => 'PUT', 'id' => true), 
    array('action' => 'delete', 'method' => 'DELETE', 'id' => true), 
    array('action' => 'update', 'method' => 'POST', 'id' => true) 
)); 
+0

정확히 내 생각을 그냥이 질문을 게시하기 전에 않았다. 변경 없음. – user2004338

3

같은 문제가있었습니다. 제 경우에는 URL에서 컨트롤러 이름을 변경하여 문제를 해결할 수있었습니다.

작동하지 않았다 : http://www.example.com/entityName.json
작품이 잘 : 컨트롤러가 플러그인 내에있는 경우 http://www.example.com/entity_name.json

+0

실제로 이것은 의미가 있습니다. 'mapResources' 함수는 컨트롤러 이름에'Inflector :: underscore'를 실행합니다. 그래서'entityName/: action'과'entity_name/: action' 사이에는 아무런 일치가 없습니다. 이것은 버전 1.3 이후 (또는 이전에는 확인하지 않음) 발생합니다. [API 참조] (http://api.cakephp.org/2.2/source-class-Router.html#462-510). – Nunser

0

, 당신은뿐만 아니라 지정해야합니다 ..

예 : 라우터 :: mapResources ('플러그인을. 제어 장치');

관련 문제