我在CakePHP中遇到路由问题。让我解释。
我正在使用Auth
组件进行身份验证。我有一个名为account
的路由前缀。
当我想编辑用户时,我正在调用用户控制器,它为我提供了一个URL:
/account/users/edit/5
我想要的是拥有如下网址:
/account/edit/5
所以我改变了我的路由器:
Router::connect('/:prefix/edit/:id',
array('controller' => 'users', 'action' => 'edit'),
array('pass' => array('id'), 'id' => '[0-9]+')
);
在我尝试访问/account/edit/5
我的问题出在我看来。如何使用Html->link
帮助程序访问此路由?
到目前为止,我只是这样做:
'/'.$this->Session->read('Auth.User.role').'/edit/'.$this->Session->read('Auth.User.id')
但在我看来,这并不是很干净。我想使用帮手。
非常感谢你的帮助
答案 0 :(得分:1)
使用前缀“account”意味着需要在控制器中执行“account_edit”之类的操作。这可能不是你想要的。另外,为什么在会话中已经存在“id”在url中?为什么不对所有用户使用url“/ account”并从操作中的会话中获取id(和角色,如果需要)?
Router::connect('/account',
array('controller' => 'users', 'action' => 'edit')
);
这将是生成所需网址的简洁方法:
$this->Html->link('Account', array(
'controller' => 'users',
'action' => 'edit'
));
// Will return url "/account"
通常总是使用数组形式来指定url以从反向路由中受益。
答案 1 :(得分:0)
除路由器外,一切都很好。它应该是
Router::connect('/account/*',
array('controller' => 'users', 'action' => 'edit')
);
使用Helper以各种方式创建锚点链接CHECK HERE