CakePHP获取动作名称

时间:2014-07-07 10:41:30

标签: php cakephp controller action

在CakePHP中,可以使用

获取被调用的函数字符串
$this->action

语法。它返回任何被调用的文字字符串,因此如果URL为/do_this,则返回do_this,如果为doThis,则返回doThis。无论被调用方法的真实名称如何。

另一方面,我所寻找的是被调用方法的实际名称,无论URL语法如何。

有没有办法找到它?

我最好能够在beforeFilter方法中执行此操作。

4 个答案:

答案 0 :(得分:20)

您应该使用请求对象。

CakePHP 3.3及以下

$this->request->params['action'];

自3.4起

$this->request->getParam('action');

我认为这应该包含被调用的真实方法名称。 CakePHP路由器将字符串URL解析为控制器/操作对和其他args,所有这些都在请求对象中结束。阅读文档并在beforeFilter()中执行debug($this->request);以查看其他内容。

答案 1 :(得分:4)

在CakePHP 2中你可以使用$ this->动作,在CakePHP 3中你必须使用$ this-> request-> params ['action']

答案 2 :(得分:3)

不推荐使用params数组(CakePHP> = 3.4)在控制器中获取当前操作的正确方法是:

$currentAction = $this->request->getParam('action');

答案 3 :(得分:0)

你看过这个吗? Retrieving the name of the current function in php 这显然不适用于beforeFilter。您可以设置变量: Controller中的private $ action_name,并在方法中设置它,然后在afterFilter

中使用它