我的蛋糕网址是这样的:
$token = '9KJHF8k104ZX43';
$url = array(
'controller' => 'users',
'action' => 'password_reset',
'prefix' => 'admin',
'admin' => true,
$token
)
我希望它能够路由到一个更漂亮的 URL,例如:
/admin/password-reset/9KJHF8k104ZX43
但是,我希望末尾的令牌是可选的,以便在有人不提供令牌的情况下,它仍然会路由到:
/admin/password-reset
这样我就可以捕获这种情况并重定向到另一个页面或显示一条消息。
我已经读了很多关于路由的书,但我仍然觉得它没有以我完全理解的方式正确解释复杂的情况,所以我真的不知道该从哪里开始。就像是:
Router::connect('/admin/password-reset/:token', array('controller' => 'users', 'action' => 'password_reset', 'prefix' => 'admin', 'admin' => true));
我真的不知道如何选择性地捕获令牌并将其传递给 URL。
您将需要使用命名参数。以我的一个项目为例
Router::connect('/:type/:slug',
array('controller' => 'catalogs', 'action' => 'view'),
array(
'type' => '(type|compare)', // regex to match correct tokens
'slug' => '[a-z0-9-]+', // regex again to ensure a valid slug or 404
'pass' => array(
'slug', // I just want to pass through slug to my controller
)
));
然后,在我看来,我可以建立一个链接来传递slug。
echo $this->Html->link('My Link', array('controller' => 'catalogs', 'action' => 'view', 'type' => $catalog['CatalogType']['slug'], 'slug' => $catalog['Catalog']['slug']));
我的控制器动作看起来像这样,
public function view($slug) {
// etc
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)