加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

Zend Framework实现Zend_View集成Smarty模板系统的方法

发布时间:2020-12-12 21:22:07 所属栏目:PHP教程 来源:网络整理
导读:本篇章节讲解Zend Framework实现Zend_View集成Smarty模板系统的方法。供大家参考研究具体如下: Zend_View抽象出了Zend_View_Interface,可以让我们集成不同的视图解决方案,例如可以集成smarty。要在zend中使用其他视图系统作为视图,只要实现Zen

本篇章节讲解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); } }

/zf_demo1/application/configs/application.ini

/zf_demo1/application/Bootstrap.php

setScriptPath('/www/zf_demo1/application/views/scripts'); return $smarty; } }

/zf_demo1/application/controllers/IndexController.php

_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

Insert title here {$book} {$author}

如果需要配置smarty可以打开/zf_demo1/library/smartylib/Smarty.class.php文件进行相应配置例如

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']); } }

更多关于zend相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《》

希望本文所述对大家PHP程序设计有所帮助。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读