CakePHP获取操作名称


CakePHP get action name

在CakePHP中,可以使用

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

语法。它返回被调用的内容的字面值字符串,所以如果URL是/do_this,它返回do_this,如果是doThis它将返回doThis。不管被调用方法的真实名称。

另一方面,我正在寻找的是被调用方法的实际名称,而不管URL语法如何。

有办法知道吗?

我最好能在beforeFilter方法中做到这一点。

您应该使用请求对象。

CakePHP 3.3及以下版本

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

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

我认为这应该包含被调用的实际方法名。cakephp的路由器将字符串URL解析为一个控制器/动作对和其他参数,所有这些都在请求对象中结束。阅读文档并在beforeFilter()中执行debug($this->request);,看看还有什么。

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

params数组(CakePHP>= 3.4)已弃用获取控制器内当前动作的正确方法是:

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

你看过这个了吗?在php中检索当前函数的名称这显然在beforeFilter中不起作用。你可以设置一个变量:private $action_name在控制器中设置,然后在afterFilter

中使用