2013-04-06 2 views
0

CakePHP의 경로에 문제가 있습니다. 설명하겠습니다. 인증 구성 요소를 통해 인증을 사용하고 있습니다. account이라는 라우팅 접두사가 있습니다. 그래서 변경Cakephp 경로와 접두사

/account/edit/5 

:

/account/users/edit/5 

내가 원하는 것은 같은 URL을하는 것입니다 : 나는 사용자를 편집 할 때 , 나는처럼 나에게 URL을주고 사용자의 컨트롤러를 호출하는거야 그런 내 라우터 :

Router::connect('/:prefix/edit/:id', 
    array('controller' => 'users', 'action' => 'edit'), 
    array('pass' => array('id'), 'id' => '[0-9]+') 
); 

내가 액세스려고 할 때 아주 잘 작동 /account/edit/5

내 문제는 제 견해에 있습니다. 어떻게 Html 링크 도우미를 사용하여이 경로에 액세스 할 수 있습니까?

'/'.$this->Session->read('Auth.User.role').'/edit/'.$this->Session->read('Auth.User.id') 

을하지만 내 생각에 정말 깨끗한 아니다 :

지금까지, 난 그냥 그런 식으로하고 있어요. 나는 당신의 컨트롤러에서 "account_edit"와 같은 동작을 필요로 의미 접두사 "계정"을 사용하여 당신의 도움

+0

는 항상 URL은 '계정'로 시작하는 것을 원하십니까 수있는 도우미를 사용하여 다양한 방법으로 앵커 링크를 작성해야합니까? – thaJeztah

+0

아니요, url은 사용자가 'account'유형을 가지고있을 때 계정으로 시작합니다. 그렇지 않으면 다른 접두사가됩니다. – lkartono

답변

0

의 도우미에게

감사를 많이 사용하고 싶습니다. 아마 당신이 원하는 것이 아닙니다. 또한 세션에 이미있을 때 URL에 "id"를 두는 이유는 무엇입니까? 왜 모든 사용자에게 url "/ account"를 사용하고 액션에서 세션의 ID (및 필요한 경우 역할)를 가져 오는 것이 좋을까요?

Router::connect('/account', 
    array('controller' => 'users', 'action' => 'edit') 
); 

필요한 URL을 생성하기 위해 깨끗한 방법이 될 것입니다 : 일반적으로

$this->Html->link('Account', array(
    'controller' => 'users', 
    'action' => 'edit' 
)); 
// Will return url "/account" 

항상 역 라우팅 혜택을 URL을 지정하는 배열 형식을 사용합니다.

+0

안녕하세요, 세션에서 ID에 대한 감사합니다. 링크에 관해서는,'type' (prefixe) 계정이 account이기 때문에'/ account' URL은 사용자 대시 보드에 대한 링크입니다. 편집하려면'/ account/edit'을 사용하고 싶습니다. 라우터의 경우 어떻게해야하는지는 알고 있지만 html 도우미와 일치하게 만드는 것입니다. 고마워요 – lkartono

+0

좋아요, 그래서 필요에 따라 경로를 사용하고 링크를 예를 들어 URL을 지정할 수 있습니다. 나는 줬다. 당신이 사용하고있는 경로가 당신이 원래 보여준 것과 같다고 가정하면, 도우미 사용법에서 url 배열에' 'prefix'=> 'account''를 추가하십시오. 나는 보여 주었다. – ADmad

+0

아니, 아직 작동하지 않습니다. '/ account/users/edit'와 같은 링크를 만듭니다. 왜 URL을 바꿀 수 없는지 이해하지 마십시오. – lkartono

0

라우터를 제외한 모든 항목이 정상입니다. 그것은

Router::connect('/account/*', 
    array('controller' => 'users', 'action' => 'edit') 
); 

을하고 사용자의 역할에 관계없이, 당신은 CHECK HERE