2012-07-12 69 views
0

我正在運行幾個cronjobs作爲CakePHP shell,我需要在那裏生成某些文檔。其中一些是將被轉換爲PDF的HTML,其中一些是帶有HTML內容的電子郵件。我有這些模板/視圖,我可以通過控制器呈現它們。我如何在Shell中渲染它們?如何渲染CakePHP Shell中的視圖/模板?

目前我正在使用str_replace()來替換某些標記與我需要的字符串,但這很髒,我需要更多類似於模板的功能,如循環和條件。

在Smarty中有Smarty-> fetch()。在CodeIgniter中有$ this-> load-> view()。它如何在CakePHP中完成?

回答

-1

我沒有看到str_replace髒。

餅視圖可以呈現爲一個字符串變量變化容易...使用「requestAction()」

function { 
requestAction("/controller/action/input1/input2",array("return")); 
} 

來源:郵政#3和上病房:http://cakebaker.wordpress.com/2005/12/31/cakephp-and-smartyies/

$posts = $this->requestAction(‘posts/index’); 
foreach($posts as $post): 
echo $post['Post']['title']; 
endforeach; 
+0

當您需要替換比簡單字符串更復雜的結構時,str_replace變髒。 此requestAction()需要使用額外的控制器,並且其操作呈現視圖。此外,我不知道它是如何工作的,它似乎使一個真正的http請求。對我而言,只有當我爲第一個參數輸入完整的「http:// www.domain.com/controller/action/」時纔有效。我認爲可能有一種更簡單的方法,比如「將這些數據放入該視圖並給出結果」。 – 2012-07-13 06:48:01

+0

也許你可以做'<?= getFunction($ abc)?>'把它放在模板文件中。那麼你可以在PHP控制器中使用'function getFunction($ result)'並且以這種方式調用它? – TheBlackBenzKid 2012-07-13 08:12:22

2

在蛋糕1.3 :

App::import('Controller'); 
    $this->view = new View(new Controller(), false); 
    $this->view->viewPath = 'elements'; 
    echo $this->view->element($name,$params); 

在蛋糕3.X

$view = new View(); 
    echo $view->element($name,$params);