`
xieye
  • 浏览: 842296 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

zend框架混合使用zend视图和smarty视图

    博客分类:
  • PHP
阅读更多
zend框架混合使用zend视图和smarty视图

为了自由使用视图,实践摸索出一套办法。

zend自带了php视图,后缀是phtml,还有一些常用的帮助类等,假如分模块,结构类似
. 
|-- application
|   |-- configs
|   |   `-- application.ini
|   |-- modules/
|   |   |-- bbs
|   |   |   |-- controllers
|   |   |   |   |-- BbsapplyController.php
|   |   |   |   |-- BbstopicController.php
|   |   |   |   `-- IndexController.php
|   |   |   |-- models
|   |   |   `-- views
|   |   |       |-- helpers
|   |   |       |-- scripts
|   |   |       `-- templates
|   |   |           |-- Bbsapply
|   |   |           |   |-- index.tpl
|   |   |           |   `-- view.tpl
|   |   |           |-- Bbstopic
|   |   |           |   |-- index1.tpl
|   |   |           |   |-- index2.tpl
|   |   |           |   `-- index.tpl
|   |   |           `-- index
|   |   |               `-- index.tpl
|   |   `-- default
|   |       |-- controllers
|   |       |   |-- IndexController.php
|   |       |   |-- NewsController.php
|   |       |-- models
|   |       `-- views
|   |           |-- helpers
|   |           |-- scripts
|   |           |   `-- index
|   |           |       |-- index.phtml
|   |           |       `-- index2.phtml
|   |           `-- templates
|   |               `-- news
|   |                   |-- category.tpl
|   |                   `-- index.tpl
|   `-- templates
|       |-- common1.tpl
|       |-- common2.tpl
|       `-- common3.tpl
|-- library
|   |-- Lib1.php
|   |-- Lib2.php
|   |-- Dao
|   |   |-- Lib1.php
|   |   `-- Lib2.php
|   |-- Smarty
|   |   |-- Config_File.class.php
|   |   |-- Smarty.class.php
|   |   |-- Smarty_Compiler.class.php
|   |   |-- Templater.php
|   |   |-- debug.tpl
|   |   |-- internals
|   |   |   |-- core.assemble_plugin_filepath.php
|   |   |   |-- core.assign_smarty_interface.php
|   |   |   `-- core.write_file.php
|   |   `-- plugins
|   |       |-- block.textformat.php
|   |       |-- compiler.assign.php
|   |       |-- function.assign_debug_info.php
|   |       `-- shared.make_timestamp.php
|   |-- Templater
|   |   `-- plugins
|   |       |-- function.pagelinks.php
|   |       |-- function.wysiwyg.php
|   |       `-- modifier.title1.php
|   `-- Zend
|       |-- Acl
|       |-- Amf
|       |-- Auth
|       |-- Barcode
|       |-- ......
|       `-- ......
|-- script
|   `-- migrate
|       `-- script1.php
`-- documentroot
    |-- design
    |   |-- demo1.html
    |   `-- demo2.html
    |-- images
    |   |-- bg.png
    |   |-- index.png
    |   |-- blank.gif
    |   |-- captcha.png
    |   `-- small.png
    |-- css
    |   |-- 1.css
    |   `-- 2.css
    |-- js
    |   `-- lib
    |       |-- jquery-1.4.2.min.js
    |       `-- jquery-ui-1.8.6.custom.min.js
    `-- index.php


4个根目录的父目录由版本管理同步,
application 框架程序
library 类库,需要放在php.ini的include_path里,其中含了smarty和Zend框架的类库。
script 一些脚本
documentroot apache的文档根目录

把smarty的模板根目录定位到application,主要是为了有一些smarty公用的模板有地方可放。

为方便起见,zend视图完全按照zend的要求,连后缀都不改,目录结构都不改。
zend视图默认的是"模块名/views/scripts/控制器名/动作名.phtml"
smarty模板则相应使用"模块名/views/templates/控制器名/动作名.tpl"

假设有两个模块,缺省模块和论坛的bbs模块,在目录中可以看出,缺省模块的index控制器使用了zend视图,别的统统使用smarty视图。

在documentroot/index.php里有如下片段
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

//创建前端控制器对象, 
$front_controller = Zend_Controller_Front::getInstance();
$front_controller->addModuleDirectory(APPLICATION_PATH . '/modules');
//分发
$front_controller->dispatch();




如果使用zend视图,则控制器类什么都不做。

在需要使用smarty的控制器里,这样
    //缺省模块的新闻控制器
    class NewsController extends Zend_Controller_Action
    {
        function init(){
            $viewRenderer = $this->getHelper('viewRenderer');
            
            $viewRenderer->setView(new Smarty_Templater())
                         ->setViewBasePathSpec(APPLICATION_PATH )
                         ->setViewScriptPathSpec('modules/:module/views/templates/:controller/:action.:suffix')
                         ->setViewSuffix('tpl')
                         ->initView();
            $this->view = $this->_helper->viewRenderer->view;                         
                        
            parent::init();
        }

        /**
         * 缺省模块的新闻控制器的index行为,使用samrty模板
         */
        public function indexAction()
        {

        }


就这样,整个世界都清净了。
分享到:
评论

相关推荐

    Zend Framework+smarty用法实例详解

    在Zend Framework中整合Smarty模板引擎,可以让开发人员利用Zend Framework强大的框架特性和Smarty简洁的模板语法来创建更为复杂和功能丰富的Web应用。以下是整合Zend Framework与Smarty时需要了解的相关知识点。 ...

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

    **Zend Framework** 是一个广泛使用的PHP框架,它提供了构建MVC(模型-视图-控制器)应用程序的强大工具。其中,**Zend_View** 是视图层的核心组件,它负责处理视图脚本并渲染输出。 **Smarty** 是一个独立的PHP...

    zend frmarwork + smarty 的整合

    3. **整合过程**:在Zend Framework中整合Smarty,通常需要创建一个新的View类,继承自Zend Framework的默认View类,然后替换掉默认的模板解析逻辑,使用Smarty来解析和渲染模板。这样做的好处是可以利用Smarty的...

    php-smarty 还有zend framework

    此外,Zend Framework还遵循了PSR(PHP框架互操作性规范)标准,增强了与其他PHP库和框架的兼容性。 在实际开发中,Smarty通常用于处理视图渲染,将后台的数据转化为用户友好的界面。而Zend Framework则作为整个...

    Zend Framework框架Smarty扩展实现方法

    3. 实例化Smarty视图类:在应用中使用Smarty视图类,需要在应用的配置文件中指定使用Smarty作为视图引擎。配置完成后,Zend Framework将自动创建Smarty实例,并将其用作视图对象。 具体实现如下: ```php class ...

    Zend中自定义Smarty模版

    3. **初始化**Smarty视图对象:根据获取到的配置信息实例化**Zamp_View_Smarty**对象。 4. **赋值**:使用`$view->assign()`方法向视图对象传递数据。 5. **设置脚本路径**:指定**Smarty**模板文件所在的目录。 6. ...

    ZendFramework整合Smarty简易方法

    本文将详细介绍如何在Zend Framework项目中集成并使用Smarty模板引擎。 #### 二、准备工作 在开始整合之前,请确保已经安装了以下组件: - PHP环境 - Zend Framework - Smarty模板引擎 确保以上环境都已安装完毕...

    zendframework+smarty+ajax经典实例

    总的来说,这个实例集合为PHP开发者提供了一个全面的学习路径,从基础的 Zend Framework 配置和MVC概念,到Smarty模板引擎的使用,再到Ajax的实现和Google Maps API的集成。通过逐步学习和实践每个章节的内容,...

    PHP5应用实例详解:使用Zend Framework & smarty构筑真正的MVC模式应用 源码

    本实例教程专注于使用PHP5结合两个强大的框架——Zend Framework和Smarty,来构建基于MVC(Model-View-Controller)模式的应用程序。MVC模式是软件工程中的一种设计模式,它将业务逻辑、数据和用户界面分离,提高了...

    Smarty jquery_api Zend_Framework_zh

    Smarty中文手册提供了关于如何使用该框架的详细指南,包括变量赋值、模板语法、函数和配置选项等,帮助开发者更好地理解和运用Smarty。 2. jQuery API: jQuery是一个流行的JavaScript库,它简化了DOM操作、事件...

    Mvc.rar_PHP MVC_PHP MVC框架_mvc_php smarty_smarty

    "php_smarty"和"smarty"标签则表明了这个框架中使用了Smarty模板系统。 【压缩包子文件的文件列表】中,"www.pudn.com.txt"可能是一个文本文件,通常这种文件名可能是来源于某个网站的下载链接,可能包含了关于该...

    php zend framework code

    PTML 可能是指 `Zend Framework` 中的视图脚本标记语言,类似于 Smarty 或其他模板引擎。它允许开发者将 PHP 代码与 HTML 结合,以创建动态页面。PTML 通过分离表现层和逻辑层,使开发者可以专注于布局和设计,而...

    php+smarty+mvc框架登录已完成

    Smarty是一个专为PHP设计的模板引擎,它将业务逻辑与视图层分离,使得开发者能够更专注于界面设计和用户体验,而不用关心后端数据处理的细节。在本次提到的“php+smarty+mvc框架登录已完成”的项目中,我们重点讨论...

    adodb手册,fleaPHP手册,mysql手册,smarty手册,zendframeworks手册,正则手册

    手册会详细介绍框架的架构、路由机制、MVC模式的应用、数据库操作、缓存管理、类库和插件的使用等。通过阅读手册,开发者可以快速理解和应用该框架。 3. **MySQL5.1简体中文参考文档**: MySQL是世界上最受欢迎的...

    php程序员用到的手册 php手册 Smarty完全中文手册 Zend_Framework手册 CSS手册

    这些手册涵盖了PHP编程、Smarty模板引擎、Zend Framework框架以及CSS样式表的重要知识,对于PHP程序员来说是必备的参考资料。下面将分别对这四个手册的主要内容进行详细的解释。 1. **PHP手册 (php_manual_zh.chm)*...

    Zend Framework 1.8 Web Application Development

    - **前端视图引擎**:默认使用的是 PHP 自带的模板引擎,但也支持其他模板引擎,如 Smarty。 - **配置文件**:配置文件通常采用 INI 或 XML 格式,用于存储框架和应用程序的配置参数。 - **异常处理**:提供了...

    基于zend Framework的购物车系统的实现

    Zend Framework 是一个强大的 MVC(模型-视图-控制器)框架,它提供了丰富的组件和工具,便于开发者构建高效、可扩展的 Web 应用。 **一、Zend Framework 简介** Zend Framework 是一个开源、面向对象的 PHP 框架...

    zend+framework技术大全前十章

    此外,还会讨论 Zend Framework 如何与其他PHP库和框架集成,以及如何利用其强大的组件化设计来构建可扩展的应用。 ### 第二章:环境配置与安装 本章将详述如何在各种操作系统环境下安装 Zend Framework,包括使用...

    Zend_Framework_mvc设计模式

    此外,还可以选择使用其他模板引擎,如Smarty或PHPTAL等。 ##### 控制器(Controller) 控制器是处理用户请求的核心组件。在Zend Framework中,控制器通常由`Zend_Controller_Action`类实现。控制器负责解析用户的...

Global site tag (gtag.js) - Google Analytics