Zend framework和Smarty整合

1,764 人次阅读
没有评论

共计 4069 个字符,预计需要花费 11 分钟才能阅读完成。

Zend framework和Smarty整合
[php]
<?php

require_once ‘Zend/View/Interface.php’;
// 下面这个是你的smarty库地址
require_once ‘Zend/Custom/View/Smarty/Smarty.class.php’;

class Zend_Custom_View_Smarty implements Zend_View_Interface {
/**
* Smarty object
* @var Smarty
*/
protected $_smarty;

/**
* Constructor
*
* @param string $tmplPath
* @param array $extraParams
* @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 string $path 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 string $path
* @param string $prefix Unused
* @return void
*/
public function setBasePath($path, $prefix = ‘Zend_View’) {
return $this->setScriptPath ( $path );
}

/**
* Alias for setScriptPath
*
* @param string $path
* @param string $prefix Unused
* @return void
*/
public function addBasePath($path, $prefix = ‘Zend_View’) {
return $this->setScriptPath ( $path );
}

/**
* Assign a variable to the template
*
* @param string $key The variable name.
* @param mixed $val The variable value.
* @return void
*/
public function __set($key, $val) {
$this->_smarty->assign ( $key, $val );
}

/**
* Retrieve an assigned variable
*
* @param string $key 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 string $key
* @return boolean
*/
public function __isset($key) {
return (null !== $this->_smarty->get_template_vars ( $key ));
}

/**
* Allows unset() on object properties to work
*
* @param string $key
* @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 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) {
if (is_array ( $spec )) {
$this->_smarty->assign ( $spec );
return;
}

$this->_smarty->assign ( $spec, $value );
}

/**
* Display 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 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 display($tpl = null) {

$translate = new Zend_Custom_Translate_Page();

$str = $this->_smarty->fetch( $tpl );
$str = $translate->translate($str);
echo $str;
}

/**
* 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 string $name The template to process.
* @return string The output.
*/
public function render($name) {
return $this->_smarty->fetch ( $name );
}

public function setCompileDir($path) {
$this->_smarty->compile_dir = $path;
}
public function setConfigDir($path) {
$this->_smarty->config_dir = $path;
}
public function setCacheDir($path) {
$this->_smarty->cache_dir = $path;
}
public function setLeftDeLimiter($delimiter) {
$this->_smarty->left_delimiter = $delimiter;
}
public function setRightDeLimiter($delimiter) {
$this->_smarty->right_delimiter = $delimiter;
}
public function setCacheLifetime($lifetime) {
$this->_smarty->cache_lifetime = $lifetime;
}
public function setCompileCheck($ischeck) {
$this->_smarty->compile_check = $ischeck;
}
public function setIsCache($iscache) {
$this->_smarty->caching = $iscache;
}
public function setDebugging($isdebugging) {
$this->_smarty->debugging = $isdebugging;
}
public function register_function($func,$f){
$this->_smarty->register_function($func,$f);
}
}

?> [/php]

正文完
 0