CakePHP获取动作名称

ari*_*rik 11 php action controller cakephp

在CakePHP中,可以使用.获取被调用的函数字符串

$this->action
Run Code Online (Sandbox Code Playgroud)

句法.它返回的任何被称为文字串,所以如果URL /do_this,它返回do_this,并且如果它是doThis,它会返回doThis.无论被调用方法的真实名称如何.

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

有没有办法找到它?

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

bur*_*zum 22

您应该使用请求对象.

CakePHP 3.3及以下版本

$this->request->params['action'];
Run Code Online (Sandbox Code Playgroud)

自3.4

$this->request->getParam('action');
Run Code Online (Sandbox Code Playgroud)

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


vis*_*lex 0

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