亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發(fā) > PHP > 正文

Zend Framework實(shí)現(xiàn)Zend_View集成Smarty模板系統(tǒng)的方法

2024-05-04 23:43:35
字體:
供稿:網(wǎng)友
這篇文章主要介紹了Zend Framework實(shí)現(xiàn)Zend_View集成Smarty模板系統(tǒng)的方法,詳細(xì)分析了視圖組件Zend_View使用接口Zend_View_Interface繼承Smarty的原理與實(shí)現(xiàn)技巧,需要的朋友可以參考下
 

本文實(shí)例講述了Zend Framework實(shí)現(xiàn)Zend_View集成Smarty模板系統(tǒng)的方法。分享給大家供大家參考,具體如下:

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.xml

24 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可以打開/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']);    }}
 


注:相關(guān)教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
91香蕉视频mp4| 日韩欧美大片在线观看| 亚洲电影免费观看高清| 神马久久午夜| 日韩在线观看一区二区| 视频二区欧美毛片免费观看| 激情六月婷婷| 麻豆精品网站| 日本亚洲一区二区| 日韩国产一区| 91精品国产综合久久久久久久久| 国产精品欧美一区二区三区| 欧美日韩色视频| 国产又色又爽又黄的| 日韩久久久久久久久久久久久| 欧美日韩精品免费| 视频一区二区综合| y111111国产精品久久久| 国产精品日韩二区| 国产肥臀一区二区福利视频| 色呦呦一区二区三区| 色老板免费视频| 自拍偷拍亚洲| 国产午夜精品美女视频明星a级| 姬川优奈av一区二区在线电影| 亚洲自拍偷拍色片视频| 丰满湿润大白屁股bbw按摩| 国产一区不卡精品| 蜜臀在线观看| 视频一区二区三区在线观看| 在线激情影院一区| 成人在线tv视频| 国产1区2区在线| 亚洲校园激情春色| 欧美久久精品一级黑人c片| 女人爱爱视频| 中文字幕免费在线看线人动作大片| 97公开免费视频| 高清精品视频| 国产人久久人人人人爽| 欧美白嫩的18sex少妇| 国产精品69久久久久孕妇欧美| 日本高清不卡一区| 亚洲福利视频三区| 日韩中文字幕网站| 国产午夜在线播放| 蜜臀国产一区二区三区在线播放| 泷泽萝拉在线播放| 国产精品视频中文字幕| 国产成人精品一区二区三区免费| 日韩不卡高清视频| 蜜月aⅴ免费一区二区三区| 精品久久五月天| 性欧美lx╳lx╳| 精品一区二区在线欧美日韩| 最新国产精品精品视频| 国产成在线观看免费视频| 在线免费观看高清视频色| 91精品国产综合久久久久久豆腐| 国产一区二区99| 888av在线视频| 亚洲av午夜精品一区二区三区| av第一福利在线导航| 你懂的在线观看视频网站| 白白色在线观看| 成人av动漫| 欧美深深色噜噜狠狠yyy| 成年网站免费| 日韩国产在线| 欧美福利一区二区| 国产一区二区丝袜高跟鞋图片| 日韩高清av| 625成人欧美午夜电影| 欧美精品一卡两卡| 欧美电影《轻佻寡妇》| 久久精品国亚洲| 久久久久久九九| 日韩欧美一区二区在线视频| 色播亚洲视频在线观看| 欧美另类一区二区| 久久精品99北条麻妃| 婷婷福利视频导航| 久久成人免费| 成人久久18免费网站漫画| av无码av天天av天天爽| 亚洲精品国产无码| 精品一区二区三区的国产在线观看| 日本卡一卡2卡3卡4精品卡网站| 亚洲蜜臀av乱码久久精品| 欧美精品一区在线播放| 精品一区二区三区免费播放| 中文字幕日韩欧美在线| 国产一级做a爰片久久毛片男| 精品免费在线| 国产激情视频在线| 久久精品国产精品亚洲毛片| 久久国产视频网| 欧美激情第三页| 牛牛视频精品一区二区不卡| 欧美xxxxxxxx| 欧洲永久精品大片ww免费漫画| 91精品啪aⅴ在线观看国产| 国产特黄级aaaaa片免| 亚洲欧美日韩动漫| 成人激情综合| 动漫3d精品一区二区三区乱码| 国产精品mv在线观看| 日韩伦理在线观看| 国产伦一区二区三区| 91高潮精品免费porn| 国产美女av一区二区三区| 欧美一区二区三区视频在线观看| www一区二区三区| 开心激情五月网| 亚洲人成亚洲精品| 国产精品第56页| 深夜福利av你懂的| 国产精品99久久久久久成人| 日本精品福利视频| 久久人人爽av| 久久精品a一级国产免视看成人| 伊人久久大香线蕉av不卡| 国产丝袜高跟一区| 依依成人综合网| 日韩一区二区免费高清| 欧美精品中文字幕一区二区| 午夜精品一区二区三| 在线观看你懂的视频| 91爱视频在线| 国产精品日本一区二区三区在线| 国内精品福利| 久热精品在线观看视频| 3d精品h动漫啪啪一区二区| 四虎国产精品成人免费4hu| 国产一区在线免费观看| 午夜精品久久久久久久星辰影院| 国产另类ts人妖一区二区| 日韩精品一区二区三区色欲av| 国产精品成人观看视频免费| 日本激情视频在线播放| 欧美18 19xxx| 欧美一卡2卡3卡4卡无卡免费观看水多多| 最近中文字幕免费在线观看| 深田えいみ中文字幕99久久| 国产精品jizz| 丝袜美腿美女被狂躁在线观看| 国产精品亚洲成在人线| 久久99精品久久久久| 欧美一区 二区| 久久精品国产麻豆| av福利导福航大全在线播放| hs视频在线观看| 亚洲看片一区| 日韩美女啊v在线免费观看| sm在线播放| 精品电影在线观看| 日韩精品一区二区三区色欲av| 国产精品福利视频| 国产一区二区三区视频免费| 一区二区三区中文在线| 国产无套精品一区二区| 99亚洲男女激情在线观看| 涩涩视频在线播放| 亚洲成人激情社区| 亚洲精品午夜久久久久久久| 在线观看久久av| 女同互忝互慰dv毛片观看| 国产免费一区二区三区在线能观看| 免看一级a毛片一片成人不卡| 视频在线观看一区二区三区| 日韩欧美国产一区在线观看| 动漫一区二区| 国产精品久久久久久超碰| 亚洲人成网址| 中文字幕在线观看亚洲| 日韩电影在线观看完整免费观看| 免费网站看v片在线a| 波多野在线观看| 影音先锋中文字幕在线播放| 3d动漫啪啪精品一区二区免费| 国产成人综合在线观看| 亚洲va久久久噜噜噜久久天堂| 麻豆一区二区麻豆免费观看| 久久国内精品| 国产资源在线免费观看| 国产在线不卡一卡二卡三卡四卡| 国产一区二区三区高清| 高清一区二区视频| 嫩草影院一区二区三区| 男女视频网站免费观看| 国产成人一区二区三区别| 99reav在线| 91精彩视频在线观看| 在线观看亚洲大片短视频| 一区二区三区四区视频免费观看| 午夜精品视频一区| 久草在线在线视频| 精品国产乱码一区二区三| 免费**毛片在线| 黄无遮挡免费网站| 污视频网站在线免费观看| 日韩av自拍| 91av久久久| 久久午夜激情| 538在线视频| 狠狠干天天干| 日韩在线视频网址| 色哟哟一一国产精品| 日韩午夜电影在线观看| 国产一区二区三区高清在线观看| 一区二区在线播放视频| 欧美精品做受xxx性少妇| 日韩在线观看免费高清完整版| 亚洲高清在线一区| 欧美性猛交一区二区三区精品| 天天操夜夜爽| www亚洲成人| 久久福利免费视频| 精品国产一区二区三区久久影院| 国产亚洲欧美一级| 欧美成人合集magnet| 亚洲图片小说综合| 国产真实乱人偷精品人妻| 欧美日韩一区二区区别是什么| 一区视频在线看| 国产成人在线看| 免费一区二区三区视频导航| 亚洲成人福利在线| 91一区在线| xxxx日本黄色| 久久五月婷婷丁香社区| 一二美女精品欧洲| 精品欧美一区二区久久久伦| 一区二区三区中文在线| 亚洲欧美综合乱码精品成人网| 国产乱淫av麻豆国产免费| 欧美成人精品不卡视频在线观看| 黄瓜视频成人app免费| 国产麻豆精品久久| 久久久久中文字幕亚洲精品| 久久se精品一区二区| 天天做天天摸天天爽天天爱| 久久久av一区| 欧美精品欧美极品欧美激情| 欧美日韩免费视频| 国产欧美日韩亚州综合| 欧美群妇大交群中文字幕| 亚洲影院在线看| 99综合久久| 日韩黄色高清视频| 在线看三级网站视频| 亚洲少妇中出一区| 国产午夜精品久久久久久免费视| √天堂资源在线| 久久伊人精品天天| 91麻豆精品国产综合久久久久久| 青青青青国产视频| 精品精品久久| 欧美激情啊啊啊| 国产又粗又大又爽的视频| 日本网站免费在线观看| 欧美在线视频观看| 在线h片观看| 国精产品一区一区二区三区mba| 欧美男女视频| 欧美日韩一区二区三区| 日韩人妻一区二区三区蜜桃视频| 亚洲欧美色图视频| 国内精品国产成人国产三级| 国产手机免费视频| 色a资源在线| 91精品视频免费| 婷婷六月综合| 五月激激激综合网色播| 在线观看18视频网站| 久久最新资源网| 欧洲成人午夜免费大片| 午夜久久久久久久久久影院| 久久久噜噜噜久久中文字免| 国产大奶视频| 中文字幕人成高视频| 欧美日韩国产色综合一二三四| aaa亚洲精品一二三区| 青青草手机视频在线观看| 国产激情一区| 男女视频一区二区| 天堂视频在线| 亚洲天堂免费电影| 精品人妻少妇嫩草av无码专区| 日本一级理论片在线大全| 最新理论片影院| 国产视频三区四区| 在线观看视频一区二区三区| 久久电影网站中文字幕| 欧美老女人在线| 97久久超碰国产精品| 亚洲爱爱爱爱爱| 日韩av在线电影| 91麻豆免费视频网站| 亚洲欧美日韩国产中文在线| 一区二区在线视频| 欧美日韩在线另类| a天堂中文在线观看| 成人免费毛片播放| 亚洲天堂手机| 成人免费毛片东京热| 亚洲裸体俱乐部裸体舞表演av| 深田咏美中文字幕| 色综合久久久久综合一本到桃花网| 69国产精品视频| 91在线成人| 亚洲人线精品午夜| 欧美a视频在线| 亚洲日本护士毛茸茸| 国产精品激情偷乱一区二区∴| av有声小说一区二区三区| 999久久久免费精品国产牛牛| 中文在线资源在线| 影音先锋导航| 亚洲日本精品| 亚洲精品视频播放| 亚洲成人看片| 97电影在线看视频| 亚洲精品精选| 欧美一级片中文字幕| 三上悠亚一区二区三区| 亚洲欧洲免费| 一区二区三区日韩精品|