Router::scope('/:club_slug', function ($routes) {
$routes->connect('/login', ['controller' => 'Users', 'action' => 'login']);
});
所以当我尝试访问时http://example.com/club-name/login
,我被重定向到http://example.com/users/login
与闪信息You have to login to access this area
.
Auth loginAction
is [controller => 'Users', 'action' => 'login']
,因为我在问题开头提到的自定义路由指向指定的路径loginAction
我认为路线会知道我在谈论同一件事,但不是正在发生的事情。
动态路由元素不会自动添加/识别,您必须使用以下任一方法来保留它们persist
选项(仅适用于该特定路线):
Router::scope('/:club_slug', function ($routes) {
$routes->connect(
'/login',
['controller' => 'Users', 'action' => 'login'],
['persist' => ['club_slug']]
);
});
或 URL 过滤器(影响所有使用club_slug
元素):
Router::addUrlFilter(function ($params, $request) {
if (isset($request->params['club_slug']) && !isset($params['club_slug'])) {
$params['club_slug'] = $request->params['club_slug'];
}
return $params;
});
或者您必须手动将该元素传递给您的登录操作(这将与club_slug
路由(无论当前 URL):
'loginAction' => [
'controller' => 'Users',
'action' => 'login',
'club_slug' => 'club-slug' // wherever it may have come from
]
See also
- 手册 > 路由 > 创建持久 URL 参数 http://book.cakephp.org/3.0/en/development/routing.html#creating-persistent-url-parameters
- API > Cake\Routing\RouteBuilder::connect() http://api.cakephp.org/3.0/class-Cake.Routing.RouteBuilder.html#_connect
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)