Cakephp:检查view元素是否存在

Fre*_*eck 7 element view cakephp-1.3

有没有办法检查视图是否存在元素?我想根据它所属的类别加载不同的元素,但并非所有类别都有一个元素...

Cod*_*der 9

从CakePHP 2.3版开始,您可以使用View的elementExists方法:

if($this->elementExists($name)) { ... }
Run Code Online (Sandbox Code Playgroud)

在2.x的旧版本中,您可以执行以下操作:

if($this->_getElementFilename($name)) { ... }
Run Code Online (Sandbox Code Playgroud)

但遗憾的是在版本1.3中,看起来唯一的方法是知道完整路径并执行以下操作:

if(file_exists($path . 'elements' . DS . $name . $ext)) { ... }
Run Code Online (Sandbox Code Playgroud)

这就是他们在1.3源代码中所做的事情,但是$path从各种插件获取并检查每个路径有一些复杂性.(见下面的链接.)

资料来源:

http://api.cakephp.org/2.3/class-View.html#_elementExists

http://api.cakephp.org/2.0/source-class-View.html#722

http://api.cakephp.org/1.3/source-class-View.html#380