2014-07-25 1 views
0

를 연결합니다CakePHP는 - 라우터에서 정규식 일치가있을 때 꽤 URL을 구축하지 않는 라우터 :: URL이 :: 내 <strong></strong> routes.php 파일은 다음과 같습니다, 내 CakePHP의에서

Router::connect('/premios/:category', 
    array('controller' => 'prizes', 'action' => 'category'), 
    array(
     'category' => '\bmarcas|restaurantes|combustibles|peluqueria\b', 
    )); 

이 방법을 사용자가/premios url을 입력 할 때마다 다음 매개 변수는 "category"정규식과 일치합니다. 이것은 완벽하게 작동합니다.

문제는 그 범주에 대한 꽤 URL을 생성 할 때,이 코드 줄은 "비 꽤"URL를 생성하여,의는 "peluqueria"를 생각한 것입니다 :

Router::url(array('controller' => 'prizes', 'action' => 'category', 'peluqueria')); ?> 

예쁜 URL (/ premios/peluqueria)을 생성하는 대신 예쁜 URL (/ prizes/category/peluqueria)을 생성합니다.

내가 뭘 잘못하고 있니? 또는 Router::url 함수의 제한 사항입니까?

해결 방법은 정규식을 피하면서 모든 연결을 정의하는 것이지만 현재의 솔루션과 카테고리 수의 증가가 시작될 때 짜증나는 것은 아닙니다.

아이디어가 있으십니까?

+0

와 문서의 this part | restaurantes | 공동 routes.php 파일에 mbustibles | peluqueria \ b''라고 입력하면 'peluquerias' (복수형)를 전달합니다. 이 예제의 목적을위한 오타입니까? 아니면 실제 문제입니까? (그냥 오타 일 경우 질문에 수정하십시오) – Nunser

+0

오타, 미안. 주의 해 주셔서 감사합니다. – Andres

답변

1

당신이

Router::url(array('controller' => 'prizes', 
        'action'  => 'category', 
        'category' => 'peluqueria')); 

처럼, 실제로 Router::url에서 category 매개 변수의 이름을 지정해야합니다 그리고 당신이 뭔가를 놓치고, 그래서 당신은 아마, 경품의 종류 행동이 "카테고리"매개 변수를 전달하려는 것

Router::connect(
    '/premios/:category', 
    array('controller' => 'prizes', 'action' => 'category'), 
    array(
     'pass' => array('category'), 
     'category' => '\bmarcas|restaurantes|combustibles|peluqueria\b' 
    ) 
); 

봐 당신은 '카테고리'=> '\ bmarcas`이 더 구금 :)

+0

I love you. 정말 고맙습니다! :) – Andres

+0

FYI, $ this-> request-> params-> pass [0] – Andres

+0

에서 찾을 수 있기 때문에 매개 변수를 전달하지 못했습니다. 'public function category ($ category = null)' 외모 :) 좋아하는 것. – Nunser

관련 문제