日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php框架 > ZendFramework > Zend Framework教程-Zend_View集成Smarty模板系統(tǒng)

Zend Framework教程-Zend_View集成Smarty模板系統(tǒng)

來(lái)源:程序員人生   發(fā)布時(shí)間:2013-12-09 00:11:06 閱讀次數(shù):5822次

         Zend_View抽象出了Zend_View_Interface,可以讓我們集成不同的視圖解決方案,例如可以集成smarty。要在zend中使用其他視圖系統(tǒng)作為視圖,只要實(shí)現(xiàn)Zend_View_Interface接口即可。

Zend_View_Interface的接口定義:

<?php /** * Interface class for Zend_View compatible template engine implementations * * @category   Zend * @package    Zend_View * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com) * @license    http://framework.zend.com/license/new-bsd     New BSD License */interface Zend_View_Interface{    /**     * Return the template engine object, if any     *     * If using a third-party template engine, such as Smarty, patTemplate,     * phplib, etc, return the template engine object. Useful for calling     * methods on these objects, such as for setting filters, modifiers, etc.     *     * @return mixed     */    public function getEngine();    /**     * Set the path to find the view script used by render()     *     * @param string|array The directory (-ies) to set as the path. Note that     * the concrete view implentation may not necessarily support multiple     * directories.     * @return void     */    public function setScriptPath($path);    /**     * Retrieve all view script paths     *     * @return array     */    public function getScriptPaths();    /**     * Set a base path to all view resources     *     * @param  string $path     * @param  string $classPrefix     * @return void     */    public function setBasePath($path, $classPrefix = 'Zend_View');    /**     * Add an additional path to view resources     *     * @param  string $path     * @param  string $classPrefix     * @return void     */    public function addBasePath($path, $classPrefix = 'Zend_View');    /**     * Assign a variable to the view     *     * @param string $key The variable name.     * @param mixed $val The variable value.     * @return void     */    public function __set($key, $val);    /**     * Allows testing with empty() and isset() to work     *     * @param string $key     * @return boolean     */    public function __isset($key);    /**     * Allows unset() on object properties to work     *     * @param string $key     * @return void     */    public function __unset($key);    /**     * Assign variables to the view script via differing strategies.     *     * Suggested implementation is to allow setting a specific key to the     * specified value, OR passing an array of key => value pairs to set en     * masse.     *     * @see __set()     * @param string|array $spec The assignment strategy to use (key or array of key     * => value pairs)     * @param mixed $value (Optional) If assigning a named variable, use this     * as the value.     * @return void     */    public function assign($spec, $value = null);    /**     * Clear all assigned variables     *     * Clears all variables assigned to Zend_View either via {@link assign()} or     * property overloading ({@link __get()}/{@link __set()}).     *     * @return void     */    public function clearVars();    /**     * Processes a view script and returns the output.     *     * @param string $name The script name to process.     * @return string The script output.     */    public function render($name);}
 

集成Smarty的基本實(shí)現(xiàn)如下:

smarty下載地址

http://www.smarty.net/files/Smarty-3.1.7.tar.gz


目錄結(jié)構(gòu)

root@coder-671T-M:/www/zf_demo1# tree.├── application│   ├── Bootstrap.php│   ├── configs│   │   └── application.ini│   ├── controllers│   │   ├── ErrorController.php│   │   └── IndexController.php│   ├── models│   └── views│       ├── helpers│       └── scripts│           ├── error│           │   └── error.phtml│           └── index│               ├── index.phtml│               └── index.tpl├── docs│   └── README.txt├── library│   ├── Lq│   │   └── View│   │       └── Smarty.php│   └── smartylib│       ├── debug.tpl│       ├── plugins │       │   ├── ...........................│       │   └── variablefilter.htmlspecialchars.php│       ├── SmartyBC.class.php│       ├── Smarty.class.php│       └── sysplugins│           ├── ..........................│           └── smarty_security.php├── public│   └── index.php├── temp│   └── smarty│       └── templates_c│           └── 73d91bef3fca4e40520a7751bfdfb3e44b05bdbd.file.index.tpl.php└── tests    ├── application    │   └── controllers    │       └── IndexControllerTest.php    ├── bootstrap.php    ├── library    └── phpunit.xml24 directories, 134 files

/zf_demo1/library/Lq/View/Smarty.php

<?phprequire_once 'smartylib/Smarty.class.php';class Lq_View_Smarty implements Zend_View_Interface {	/**	 * Smarty object	 * 	 * @var Smarty	 */	protected $_smarty;		/**	 * Constructor	 *	 * @param $tmplPath string       		 * @param $extraParams array       		 * @return void	 */	public function __construct($tmplPath = null, $extraParams = array()) {		$this->_smarty = new Smarty ();				if (null !== $tmplPath) {			$this->setScriptPath ( $tmplPath );		}				foreach ( $extraParams as $key => $value ) {			$this->_smarty->$key = $value;		}	}		/**	 * Return the template engine object	 *	 * @return Smarty	 */	public function getEngine() {		return $this->_smarty;	}		/**	 * Set the path to the templates	 *	 * @param $path string	 *       	 The directory to set as the path.	 * @return void	 */	public function setScriptPath($path) {		if (is_readable ( $path )) {			$this->_smarty->template_dir = $path;			return;		}				throw new Exception ( 'Invalid path provided' );	}		/**	 * Retrieve the current template directory	 *	 * @return string	 */	public function getScriptPaths() {		return array ($this->_smarty->template_dir );	}		/**	 * Alias for setScriptPath	 *	 * @param $path string       		 * @param $prefix string	 *       	 Unused	 * @return void	 */	public function setBasePath($path, $prefix = 'Zend_View') {		return $this->setScriptPath ( $path );	}		/**	 * Alias for setScriptPath	 *	 * @param $path string       		 * @param $prefix string	 *       	 Unused	 * @return void	 */	public function addBasePath($path, $prefix = 'Zend_View') {		return $this->setScriptPath ( $path );	}		/**	 * Assign a variable to the template	 *	 * @param $key string	 *       	 The variable name.	 * @param $val mixed	 *       	 The variable value.	 * @return void	 */	public function __set($key, $val) {		$this->_smarty->assign ( $key, $val );	}		/**	 * Retrieve an assigned variable	 *	 * @param $key string	 *       	 The variable name.	 * @return mixed The variable value.	 */	public function __get($key) {		return $this->_smarty->get_template_vars ( $key );	}		/**	 * Allows testing with empty() and isset() to work	 *	 * @param $key string       		 * @return boolean	 */	public function __isset($key) {		return (null !== $this->_smarty->get_template_vars ( $key ));	}		/**	 * Allows unset() on object properties to work	 *	 * @param $key string       		 * @return void	 */	public function __unset($key) {		$this->_smarty->clear_assign ( $key );	}		/**	 * Assign variables to the template	 *	 * Allows setting a specific key to the specified value, OR passing an array	 * of key => value pairs to set en masse.	 *	 * @see __set()	 * @param $spec string|array	 *       	 The assignment strategy to use (key or array of key	 *       	 => value pairs)	 * @param $value mixed	 *       	 (Optional) If assigning a named variable, use this	 *       	 as the value.	 * @return void	 */	public function assign($spec, $value = null) {		if (is_array ( $spec )) {			$this->_smarty->assign ( $spec );			return;		}				$this->_smarty->assign ( $spec, $value );	}		/**	 * Clear all assigned variables	 *	 * Clears all variables assigned to Zend_View either via {@link assign()} or	 * property overloading ({@link __get()}/{@link __set()}).	 *	 * @return void	 */	public function clearVars() {		$this->_smarty->clear_all_assign ();	}		/**	 * Processes a template and returns the output.	 *	 * @param $name string	 *       	 The template to process.	 * @return string The output.	 */	public function render($name) {		ob_start();		echo $this->_smarty->fetch ( $name );		unset($name);	}}

/zf_demo1/application/configs/application.ini

[production]includePaths.library = APPLICATION_PATH "/../library"bootstrap.path = APPLICATION_PATH "/Bootstrap.php"bootstrap.class = "Bootstrap"appnamespace = "Application"autoloadernamespaces.lq = "Lq_"pluginpaths.Lq_View_Smarty = "Lq/View/Smarty"resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"resources.frontController.params.displayExceptions = 1phpSettings.display_startup_errors = 1phpSettings.display_errors = 1
 


/zf_demo1/application/Bootstrap.php


<?phpclass Bootstrap extends Zend_Application_Bootstrap_Bootstrap {	/**	 * Initialize Smarty view	 */	protected function _initSmarty() {		$smarty = new Lq_View_Smarty ();				$smarty->setScriptPath('/www/zf_demo1/application/views/scripts');		return $smarty;	}}


/zf_demo1/application/controllers/IndexController.php

<?phpclass IndexController extends Zend_Controller_Action {		public function init() {		/*		 * Initialize action controller here		 */	}		public function indexAction() {		$this->_helper->getHelper('viewRenderer')->setNoRender();		$this->view = $this->getInvokeArg ( 'bootstrap' )->getResource ( 'smarty' );		$this->view->book = 'Hello World!  ';		$this->view->author = 'by smarty';		$this->view->render('index/index.tpl');	}}

/zf_demo1/application/views/scripts/index/index.tpl

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body>{$book}{$author}</body></html>

如果需要配置smarty可以打開(kāi)/zf_demo1/library/smartylib/Smarty.class.php文件進(jìn)行相應(yīng)配置例如


....................................    /**     * Initialize new Smarty object     *     */    public function __construct()    {        // selfpointer needed by some other class methods        $this->smarty = $this;        if (is_callable('mb_internal_encoding')) {            mb_internal_encoding(Smarty::$_CHARSET);        }        $this->start_time = microtime(true);        // set default dirs        $this->setTemplateDir('/www/zf_demo1/temp/smarty' . DS . 'templates' . DS)            ->setCompileDir('/www/zf_demo1/temp/smarty' . DS . 'templates_c' . DS)            ->setPluginsDir(SMARTY_PLUGINS_DIR)            ->setCacheDir('/www/zf_demo1/temp/smarty' . DS . 'cache' . DS)            ->setConfigDir('/www/zf_demo1/temp/smarty' . DS . 'configs' . DS);        $this->debug_tpl = 'file:' . dirname(__FILE__) . '/debug.tpl';        if (isset($_SERVER['SCRIPT_NAME'])) {            $this->assignGlobal('SCRIPT_NAME', $_SERVER['SCRIPT_NAME']);        }    }......................




生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 日韩精品极品视频在线观看免费 | 成年人午夜视频 | 国产美女一区二区三区 | 一级黄色免费看 | 国精品一区二区 | 91精品国产乱码久久久久久 | 亚洲最黄网站 | 亚洲青青草 | 可以免费看的毛片 | 国产精品一区自拍 | 国产精品一区二区三区免费 | 国产亚洲精品精品国产亚洲综合 | 国产精品久久久久久久7电影 | 中文字幕不卡一区 | 国产精品v欧美精品v日韩精品 | 不卡在线一区 | 国产午夜免费 | 成人av在线网站 | 高清不卡一区二区 | 成人av电影在线观看 | 欧美久久一区 | 国产精品一区二区三区网站 | 九九精品视频在线 | 国产精品一区二区久久久 | 日韩 欧美 综合 | 三级电影网址 | 国产黄色电影 | www黄色| 亚洲综合欧美 | 久久都是精品 | 三级黄色片 | а天堂中文最新一区二区三区 | 成人免费视频在线观看 | 精品毛片 | 国产毛片毛片 | 久久精品国产一区二区 | 国产一区二区三区在线视频观看 | 国产乱码精品一区二区三区中文 | 国产高清在线观看 | 不卡中文字幕在线观看 | 国产一区不卡视频 |