2012-09-12 2 views
0

cakephp 1.3을 사용하고 있습니다. 여기에 내 문제 :올바른 결과를주지 못하는 Cakephp 라우팅

"learns"라는 컨트롤러와 "classroom"이라는 메서드가 있습니다. 내가 이렇게되고 싶어 http://www.url.com/learns/classroom/15

:

내가이 링크를 사용, 교실 방법에 액세스하려면 http://www.url.com/class/15

을 그리고 이것은 어떻게 설치 경로입니다 :

Router::connect('/:class/:id', array('controller' => 'learns', 'action' => 'classroom'), array('id' => '[0-9]+')); 

I 왜 실제로 작동하지 않는지 모르겠다. 설명서를 읽었을 때 방금 요리 책에서이 솔루션을 복사했습니다 ..

미리 도움을 주셔서 감사합니다.

답변

1

라우터 진술에 이상이 없습니다. 비록 당신이 실제로 /: class/: id을 "/class/: id"대신에 실제로 쓰고 싶지는 모르지만. 차이점을 보시겠습니까? 콜론은 두 번째 버전에서 누락되었습니다.

이것은/class/[an-id]로 시작하는 모든 요청이 규칙에 매핑되어야한다는 것을 라우터에 알려줍니다. 여기서/: class는 라우터에 인수를 전달한다는 의미입니다. 그것은 아무것도 /foo는/15 또는 /바/15 될 수 있으며, 이러한 인수는 $ this-> PARAMS [ '클래스']$ this-> PARAMS에서 사용할 수 있습니다 [ 'ID'] .,이 규칙을 가정하면 ->/: class/: id

당신의 질문에 "나는 그게 왜 효과가 없는지 잘 모르겠다"고 말합니다. 실제 문제에 관해서는 아무 말도하지 않으므로 이러한 종류의 진술은 피하십시오.

대신 예상 한 내용을 알려주십시오. 대신에 무엇을 보았습니까? 오류였습니까? 아니면 경고? 예를 들어 다른 액션이 실행 된 것과 같이 완전히 다른 것을 본다면 라우터가 실제로 작동하는 방식 때문일 수 있습니다.

/사용자/* 및 /사용자/:이 같은 욕심 노선과 정상적인 경로가 있다면 ID를

/사용자/* 욕심 와 같이 두 번째 URL은 모든 요청에 ​​일치하지 않습니다

이며 첫 번째 라우팅 규칙이 false를 반환하지 않는 한 모든 요청을 자체적으로 수행합니다.

상황에 따라 맞춤 라우트 클래스를 작성하는 방법을 읽어 보시기 바랍니다. 요컨대 사용자 지정 라우트 클래스는 탐욕스러운 경로를 덜 욕심 거리게 만듭니다. 더 자세한 설명은 여기에있는 훌륭한 기사입니다 : http://mark-story.com/posts/view/using-custom-route-classes-in-cakephp

cakephp에서의 라우팅은 가장 혼란스러운 주제 중 하나이며 주위를 둘러보기까지 어느 정도 시간이 걸릴 수 있습니다. 요리 책은 가장 친한 친구입니다. 라우팅 규칙에서 각 라우팅 요소가 무엇을하는지 확신 할 때까지 모든 것을 읽고 다시 읽습니다.

관련 문제