Zend Framework + Smarty2 + Smarty3 整合應用

在你開始閱讀前請先前往鐵神: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

One thought on “Zend Framework + Smarty2 + Smarty3 整合應用

  1. Pingback: Zend Framework + Smarty3 整合應用 | SDpower

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *