Zend Framework实现Zend_View集成Smarty模板系统的方法
|
本文实例讲述了Zend Framework实现Zend_View集成Smarty模板系统的方法。分享给大家供大家参考,具体如下: Zend_View抽象出了Zend_View_Interface,可以让我们集成不同的视图解决方案,例如可以集成smarty。要在zend中使用其他视图系统作为视图,只要实现Zend_View_Interface接口即可。 Zend_View_Interface的接口定义: 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的基本实现如下:
http://www.smarty.net/files/Smarty-3.1.7.tar.gz
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.xml 24 directories,134 files /zf_demo1/library/Lq/View/Smarty.php _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);
}
}
(编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
