2015-07-03 29 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)可以重寫的內容。這對我來說很奇怪 –