CakePHP - 快速获取/控制器/动作路径的方法?

时间:2011-07-27 12:25:06

标签: php cakephp cakephp-1.2

是否有一个Controller属性允许我从URL中获取/controller/action而不需要任何其他参数?

目前我必须加入$this->name . '/' . $this->action

3 个答案:

答案 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