CakePHP 2.5路由上是否可以没有前缀?
我们正在努力实现一种<domain>/<username>
类型路线,该路线将路由到标准的蛋糕网址<domain>/users/view/XX
。类似于Twitter URL结构,虽然我不确定零前缀路由是否可行。如果是,它是否会破坏其他模型的标准Cake路由?
<domain>/users/view/1
效果很好。
我可以像这样添加一个路由到routes.php,这会稍微缩短网址,
Router::connect(
'/u/*',
array('controller' => 'users', 'action' => 'view_by_slug')
);
但是我们想知道是否有可能缩短它并获得<domain>/<username>
类型前缀。
编辑:为了完整性,这里是当前的view_by_slug()
控制器
public function view_by_slug($slug = null) {
$user = $this->User->findBySlug($slug);
debug($user);
if (!$user) {
throw new NotFoundException(__('Invalid user'));
}
}
数据库中的Users.slug是varchar(255)
Router::connect(
'/*', array('controller' => 'users', 'action' => 'view_by_slug')
);
似乎可以正常工作,但它会禁用Cake默认路由。
答案 0 :(得分:0)
您可以尝试以下内容(未经测试但应该可以使用)
Router::connect('/:slug/',
array('controller' => 'users', 'action' => 'view_by_slug'),
array('slug' => '[a-z0-9-]+', 'pass' => array('slug'))
);
Router::connect('/:slug/controller', array('action' => 'index'));
Router::connect('/:slug/controller/*');