2012-01-09 11 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

+0

いいえ、これはデフォルトでは機能しません。 Zend_View_Abstract :: renderにファイル名を渡す必要があります。メッセージ「スクリプト ' ...'がパスに見つかりませんでした...」を含むZend_View_Exceptionがスローされます。 – atodd

答えて

4

Zend_ViewZend_View_Abstractを拡張し(render()によって呼び出される)_run()方法の具体的な実装を宣言する。 SIC:

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を呼び出すよりも遅くなる場合があります:私はあなたが何をしたいと思い

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

は基本的です。ファイルのダンプコードは、代わりに_runメソッドの中に入れることができます。そうすることは、読者のための練習として残されています。

関連する問題