Zend Framework + Smarty2 + Smarty3 整合應用
by admin on 四月.08, 2010, under PHP & MYSQL, Zend Framework
在你開始閱讀前請先前往鐵神:Smarty 2 整合到 Zend Framework 1.10 閱讀完畢並了解.
之前有使用過ZFDebug 感受到整合便利性,於是在整合Sarmty 時想嘗試類似方式做到方便的整合.
Smarty 2
將附件內的Smarty2拷貝到你的library目錄內
在你的application.ini加入
autoloadernamespaces[] = "Smarty2"
Bootstrap.php 範例
<?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected function _initView(){ $view = new Smarty2_View_Smarty (array( 'scriptPath' => APPLICATION_PATH . '/', 'params' => array( 'left_delimiter' => '<%', // 改成你慣用的 'right_delimiter' => '%>', // 改成你慣用的 'plugins_dir' => APPLICATION_PATH . '/library/Smarty2/Smarty/plugins', // 自訂的 Smarty plugins 可以放這裡 'compile_dir' => APPLICATION_PATH . '/../tmp/compiled', ), 'helper_dirs' => array( //'My/View/Helper' => 'My_View_Helper_', // 如果將來需要自己的 View Helper ,可以放在這裡 'Zend/View/Helper' => 'Zend_View_Helper_' ), )); // Controller Plugin Zend_Controller_Front::getInstance()->registerPlugin(new Smarty2_Controller_Plugin_Smarty()); // View Renderer Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer') ->setViewSuffix('tpl.htm') // 可以改成慣用的樣版副檔名 ->setView($view); // Zend Layout $view->layout = Zend_Layout::startMvc(array( 'inflectorTarget' => 'layouts/scripts/:script.:suffix', 'layout' => 'layout', 'viewSuffix' => 'tpl.htm', // 可以改成慣用的樣版副檔名 ))->setView($view); } }
Smarty 3
Smarty3 得特性在浙次整合並沒有發揮,只是先依照以前Smarty2的用法去用而已.
所以與Smarty 2 整合大同小異.
將附件內的Smarty3拷貝到你的library目錄內
在你的application.ini加入
autoloadernamespaces[] = "Smarty3"
Bootstrap.php 範例
<?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected function _initView(){ $view = new Smarty3_View_Smarty (array( 'scriptPath' => APPLICATION_PATH . '/', 'params' => array( 'left_delimiter' => '<%', // 改成你慣用的 'right_delimiter' => '%>', // 改成你慣用的 'plugins_dir' => APPLICATION_PATH . '/library/Smarty3/Smarty/plugins', // 自訂的 Smarty plugins 可以放這裡 'compile_dir' => APPLICATION_PATH . '/../tmp/compiled', ), 'helper_dirs' => array( //'My/View/Helper' => 'My_View_Helper_', // 如果將來需要自己的 View Helper ,可以放在這裡 'Zend/View/Helper' => 'Zend_View_Helper_' ), )); // Controller Plugin Zend_Controller_Front::getInstance()->registerPlugin(new Smarty3_Controller_Plugin_Smarty()); // View Renderer Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer') ->setViewSuffix('tpl.htm') // 可以改成慣用的樣版副檔名 ->setView($view); // Zend Layout $view->layout = Zend_Layout::startMvc(array( 'inflectorTarget' => 'layouts/scripts/:script.:suffix', 'layout' => 'layout', 'viewSuffix' => 'tpl.htm', // 可以改成慣用的樣版副檔名 ))->setView($view); } }
注意如果你於使用中 compile_dir目錄未建置或不可讀寫並且使用ZFDebug.會發現空白頁面並且無任何訊息.
請先參考附件架構.
附件:zf_smarty

1 Trackback or Pingback for this entry
四月 8th, 2010 on 23:31:57
[...] Zend Framework + Smarty2 + Smarty3 整合應用 我曾說過:之前有使用過ZFDebug 感受到整合便利性 [...]