在View(CakePHP)中,获取当前控制器的正确方法是什么?

Hao*_*Hao 35 cakephp-2.0

在View中,我可以通过使用来获取操作

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

但是,我无法获得控制器名称

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

在View中获取当前控制器的正确方法是什么?

Wa0*_*x6e 79

使用$this->params['controller']来获得当前的控制器.

您可以执行a debug($this->params)查看其他可用变量.


tra*_*nte 12

你可以得到这样的控制器:

echo "<pre>controller:".$this->request->params['controller']."</pre>";
Run Code Online (Sandbox Code Playgroud)

虽然$this->params更短,但$this->request->params更自动完整友好.您可以从此问题中检查自动完成选项:PHPStorm在视图文件中自动完成CakePHP自定义帮助程序

有关请求的其他数据可以这样:

echo "<pre>action:".$this->request->params['action']."</pre>";

echo "<pre>request:"; print_r( $this->request ); echo "</pre>";

echo "<details><summary>this:</summary><pre>"; 
      print_r( $this ); echo "</pre></details>";
Run Code Online (Sandbox Code Playgroud)

编辑:
从CakePHP 3开始$this->params删除快捷方式.因此,您应该使用$this->request->params['controller']CakePHP 3.
http://book.cakephp.org/3.0/en/appendices/3-0-migration-guide.html#id2
另请注意,控制器的第一个字符是大写的.它在Cakephp 2中是小写的.


小智 9

$this->name还给你控制器的名字.他们的不同之处$this->params['controller']在于它的首字母大写

debug($this->name);
debug($this->params['controller']);
Run Code Online (Sandbox Code Playgroud)

结果是:

 \app\Controller\AppController.php (line 176)

'Users'

\app\Controller\AppController.php (line 177)

'users'
Run Code Online (Sandbox Code Playgroud)


小智 6

我正在使用 cakephp 3.2

$this->params['controller'] - It is not working, showing error message as bellow..
Run Code Online (Sandbox Code Playgroud)

《失踪的帮手》

以下代码在 cakephp 3.2 中正常工作

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