侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

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

框架(架构)  /  管理员 发布于 7年前   157

本文实例讲述了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的基本实现如下:

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

[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

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文件进行相应配置例如

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

更多关于zend相关内容感兴趣的读者可查看本站专题:《Zend FrameWork框架入门教程》、《php优秀开发框架总结》、《Yii框架入门及常用技巧总结》、《ThinkPHP入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

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

您可能感兴趣的文章:

  • Zend Framework教程之视图组件Zend_View用法详解
  • Zend Framework处理Json数据方法详解
  • Zend Framework使用Zend_Loader组件动态加载文件和类用法详解
  • Zend Framework入门教程之Zend_Registry组件用法详解
  • Zend Framework入门教程之Zend_Config组件用法详解
  • Zend Framework过滤器Zend_Filter用法详解
  • Zend Framework实现自定义过滤器的方法
  • php入门教程之Zend Studio设置与开发实例
  • Zend Framework开发入门经典教程
  • Zend Framework入门教程之Zend_View组件用法示例


  • 上一条:
    Zend Framework动作助手(Zend_Controller_Action_Helper)用法详解
    下一条:
    Zend Framework教程之视图组件Zend_View用法详解
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Filament v3.1版本发布(0个评论)
    • docker + gitea搭建一个git服务器流程步骤(0个评论)
    • websocket的三种架构方式使用优缺点浅析(0个评论)
    • ubuntu20.4系统中宿主机安装nginx服务,docker容器中安装php8.2实现运行laravel10框架网站(0个评论)
    • phpstudy_pro(小皮面板)中安装最新php8.2.9版本流程步骤(0个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2018-05
    • 2020-02
    • 2020-03
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-11
    • 2021-03
    • 2021-09
    • 2021-10
    • 2021-11
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-08
    • 2023-08
    • 2023-10
    • 2023-12
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客