是否有一个Controller属性允许我从URL中获取/controller/action
而不需要任何其他参数?
目前我必须加入$this->name . '/' . $this->action
。
答案 0 :(得分:16)
您不希望构造字符串/users/login
,您希望与用户控制器的登录操作相对应的URL (例如)。这不一定与/users/login
相同,你不应该硬编码!
要获取将导致控制器操作的URL,请使用反向路由:
Router::url(array('controller' => 'users', 'action' => 'login'));
//or
Router::url(array('controller' => $this->name, 'action' => $this->action));
是的,那甚至更长,但这是正确的方法。如果有一天您决定要将登录网址设为/login
或/members/entrance
而不是/users/login
,则只需在routes.php
中定义合适的路由,而无需重写所有硬编码链接。
答案 1 :(得分:4)
$this->here
在视图和控制器中可用。小调:它已在2.0中删除。
答案 2 :(得分:2)
也可以在2.x。
中使用HtmlHelper::url方法$this->Html->url(array(
"controller" => "controller",
"action" => "action",
"parameter"
));
对于CakePHP 3.x,UrlHelper是一个不错的选择:
$this->Url->build([
"controller" => "controller",
"action" => "action",
"parameter"
]);
两个例子都产生
/controller/action/parameter