2012-01-09 88 views
2

我目前有一個CMS,可以在數據庫表中寫入一些頁面。爲了使用Zend_View呈現它們,我有一個將它們寫入文件系統的方法。我想跳過該過程並直接從數據庫中呈現模板。如何從字符串而不是文件渲染Zend_View腳本

例如:

<?php 
$template = '<html> 
<head> 
<title>Test</title> 
</head> 
<body> 
<?php echo $this->test ?> 
</body> 
</html>'; 

$view = new Zend_View(); 
$view->test = 'This is a test'; 
echo $view->render($template); 
?> 
+1

沒有按預期工作? – emaillenin 2012-01-09 16:37:09

+0

不,這在默認情況下不起作用。 Zend_View_Abstract :: render必須傳遞一個文件名。帶有消息「script」的Zend_View_Exception ...「路徑中找不到...」將被拋出。 – atodd 2012-01-09 18:09:58

回答

4

Zend_View延伸Zend_View_Abstract和聲明瞭一個具體實現_run()方法(其由render()調用)。原文:

protected function _run() 
{ 
    include func_get_arg(0); 
} 

我猜你想要的東西基本上是:

class Zend_View_String extends Zend_View // or maybe // extends Zend_View_Abstract 
{ 
    protected function _run() 
    { 
     $php = func_get_arg(0); 

     eval(' ?>'. $php. '<?php '); 
    } 
} 

但可能是不是將其寫入到一個文件並調用include慢。您可以將文件傾銷代碼放入您自己的_run方法中。這樣做只是給讀者一個練習。