2015-07-03 64 views
1

在Cakephp版本2.4中控制器渲染视图之前需要检查视图文件是否存在?然后决定渲染。例如我需要像下面的代码。Cakephp:检查模板文件是否存在?

if(template_exist($template_name)) 
{ 
    $this->render($template_name); 
} 
else 
{ 
    $this->render($default_template); 
} 

目前我使用的try/catch但我寻求最佳way.I需要功能template_exist任何一个可以帮助吗?

回答

1

您可以通过创建然后使用elementExists()来检查模板存在一个新的视图对象从控制器做到这一点: -

$View = new View($this, false); 
if ($View->elementExists($templateName) === true) { 
    $this->render($templateName); 
} else { 
    $this->render($defaultTemplate); 
} 

这样蛋糕将检查所有元素模板的老地方。

+0

谢谢你花时间回答,但它不工作它总是返回false什么样的模板文件存在或不是我测试的直接文件和子目录 –

+0

作为'$ templateName'传递什么?它不应该包含'.ctp'扩展名。看看'elementExists()'调用的'View :: _ getElementFilename()'方法。你会看到它使用'file_exists()'来检查文件。您要么不正确地传递视图文件,要么文件不存在。总是值得看看当你调用其中一种方法时Cake实际上在做什么,因为它经常会揭示你的问题的原因。 :-) – drmonkeyninja

+0

我正好传递$ this-> render($ templateName)可以重写的内容。这对我来说很奇怪 –