【发布时间】:2014-12-17 19:13:05
【问题描述】:
CakePHP 2.5 路由可以没有前缀吗?
我们正在尝试实现<domain>/<username> 类型的路由,该路由将路由到标准Cake url,如<domain>/users/view/XX。类似于 Twitter URL 结构,尽管我不确定零前缀路由是否可行。如果是,是否也会破坏其他模型的标准 Cake 路由?
<domain>/users/view/1 工作正常。
我可以像这样向routes.php添加一个路由,稍微缩短URL,
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 默认路由。
【问题讨论】:
-
如果您不使用 domain.com/account、domain.com/messages、domain.com/login 等链接,这是个好主意。如果您这样做,您需要在注册他们不能使用某些用户名,这可能是一个很长的列表。不过,HelloSpeakman 的回答应该有效。
标签: cakephp