`
yangyz1984
  • 浏览: 34822 次
  • 性别: Icon_minigender_1
  • 来自: 安徽省
社区版块
存档分类
最新评论

开始使用 Zend_Layout

阅读更多

目录

Zend_Layout介绍

使用Zend_Layout

Zend_Layout小结

 

Zend_Layout: 介绍

 

当使用 Zend Framework MVC 层来建设一个网站的时候,你的视图脚本将会典型的只是和请求动作相关的 HTML 片断。例如,如果你有 /user/list 这个动作,你可能创建一个穷尽用户并呈现一个没有号码的列表的视图脚本:

 

  1. <h2>Users</h2>
  2. <ul>
  3.     <?php if (!count($this->users)): ?>
  4.     <li>No users found</li>
  5.     <?php else: ?>
  6.     <?php foreach ($this->users as $user): ?>
  7.     <li>
  8.         <?php echo $this->escape($user->fullname) ?>
  9.         (<?php echo $this->escape($user->email) ?>)
  10.     </li>
  11.     <?php endforeach ?>
  12.     <?php endif ?>
  13. </ul>

由于这只是 HTML 的一个片断,它不是一个合法的页面;它没有 DOCTYPE 声明,以及 HTML 和 BODY 的开始标签。所以,现在的问题是,这些元素将会在哪里被创造?

在 Zend Framework 的早期版本中,开发者通常创建拥有这些工件的 header 和 footer 视图脚本,然后他们会在每一个视图脚本中调用这两个脚本。当使用这种方法的时候,它会使以后的重构,或者通过调用多种行动来建造复合内容变得困难。

Tow Step View 设计模式回答了这些问题。在这个模式中,应用程序的视图将首先被创建,然后注入到页面视图,页面视图然后将呈现给客户。页面视图可以被认作你整个网站的模板,拥有许多被大量页面使用的通用元素。

在 Zend Framework 中,Zend_Layout 应用了 TwoStep View 模式。

 

使用 Zend_Layout

 

Zend_Layout 的基本用法有些繁琐。假设你已经在使用 Zend_Application,你只要简单的提供一些配置选项然后创建一个模板视图脚本。

模板配置

模板的默认位置在你的应用程序中的 layouts/scripts/ 子目录。

 

  1. application
  2. |-- Bootstrap.php
  3. |-- configs
  4. |   `-- application.ini
  5. |-- controllers
  6. |-- layouts
  7. |   `-- scripts
  8. |       |-- layout.phtml

为了初始化 Zend_Layout,把以下内容添加到你的配置文件中(application/configs/application.ini):

 

  1. resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
  2. resources.layout.layout = "layout"

第一行指示了到哪里查找模板脚本,第二行给出模板将要使用的名字,去掉了视图脚本的扩展名(默认是被假设为 .phtml)。

 

创建一个模板脚本

现在你已经把配置放在了合适的地方,你需要创建你的模板脚本。首先,确保你已经创建了 application/layouts/scripts 目录,然后,打开一个编辑器,然后为你的模板创建标签。模板脚本是简单的视图脚本,稍微有一点不同。

 

  1. <html>
  2. <head>
  3.     <title>My Site</title>
  4. </head>
  5. <body>
  6.     <?php echo $this->layout()->content ?>
  7. </body>
  8. </html>

在上面的例子中,你会注意到调用了一个 layout() 的视图帮助器。当你注册 Zend_Layout 资源的时候,你同时获取了一个行动和视图帮助器,以让你访问 Zend_Layout 实例;你然后可以对模板对象进行操作。在这个例子中,我们在检索一个已经命名的变量,$content,然后输出它。默认的,$content 变量被应用程序的视图脚本呈现内容填充。除此以外,在一个视图脚本里你一般做的任何事情都是十分合理的(在模板脚本中做类似的事情)——调用你想使用的任何帮助器或者视图方法。

至此,你有了一个运行了的模板脚本,你的应用程序被告知它(模板脚本)的位置以及知道呈现它。

 

访问模板对象

有时,你可能需要直接访问模板对象。有三种方法让你达到这个目的:

在视图脚本内:使用 layout() 视图帮助器,它将返回在前端控制器插件上注册的 Zend_Layout 实例。

 <?php $layout = $this->layout(); ?>

 

由于它返回模板的实例,你也可以简单的调用它的方法,而不是把它赋值给一个变量。

在行为控制器内:使用 layout() 行为帮助器,这将如同视图帮助器。

 

  1. // Calling helper as a method of the helper broker:
  2. $layout = $this->_helper->layout();
  3.  
  4. // Or, more verbosely:
  5. $helper = $this->_helper->getHelper('Layout');
  6. $layout = $helper->getLayoutInstance();

如同视图帮助器,由于行为帮助器返回模板的实例,你也可以简单的调用它的方法,而不必把它赋值给一个变量。

 

其它地方:使用静态方法 getMvcInstance()。这将返回被 bootstrap 资源注册的模板实例。

 

$layout = Zend_Layout::getMvcInstance();

 

通过 bootstrap:检索模板资源,就是 Zend_Layout 的实例。

 

$layout = $bootstrap->getResource('Layout');

 

在你拥有访问 bootstrap 对象权限的任何地方,这个方法比使用静态 getMvcInstance() 方法更好。

 

其它的操作

在大多数个案中,以上的配置和模板脚本(带修饰)将使你得到你所需要的。然而,仍然有一些其它的功能,你迟早会用到它们。在下面的所有例子中,你可能使用上述的方法中的一种,来检索模板对象。

 

设置模板变量。Zend_Layout 保持了它自己的你可以访问的关于模板相关的视图变量的注册表;在初始化模板脚本 样本中的 $content 就是一个例子。你可以通过普通的属性访问来分配和检索这些变量,或者通过 assign() 方法。

 

  1. // Setting content:
  2. $layout->somekey = "foo"
  3.  
  4. // Echoing that same content:
  5. echo $layout->somekey; // 'foo'
  6.  
  7. // Using the assign() method:
  8. $layout->assign('someotherkey', 'bar');
  9.  
  10. // Access to assign()'d variables remains the same:
  11. echo $layout->someotherkey; // 'bar'

disableLayout()。偶而,你可能想关闭模板;比如,当响应一个 Ajax 请求的时候,或者提供一个资源的可 RESTful 的呈现。在这些个案中,你可以调用在你的模板对象上的 disableLayout() 方法。

 

$layout->disableLayout();

 

与之相反的方法是,当然,enableLayout(),可以在任何时候调用来再次响应行为要求重新激活模板。

 

选择另外的模板:如果你为网站或者应用程序准备了许多套模板,你可以通过简单的调用 setLayout() 方法来在任何时间选择要使用的模板。通过指定模板脚本去掉文件后缀的文件名来调用它。

 

  1. // Use the layout script "alternate.phtml":
  2. $layout->setLayout('alternate');

模板脚本应该放置在你的配置文件中指定的 $layoutPath 路径中。Zend_Layout 将会使用这个新的模板。

 

Zend_Layout: 小结

Zend_Layout 是一个对 Zend_View 的十分简单的包装,它提供了立即 Two Step View 的好处,给你可伸缩性来创建一个可以把你的应用程序的内容注射进入的全网站设计。

如果你仔细的观察这些例子,然而,你可能会觉得它的功能相对有限:你应该如何改变页面的标题,注入一个可选脚本标签,或者甚至是创建一个可选的横幅?这些问题和 Composite view 这个概念相关——而且是本教程下一章的目标,有关视图占位符。

分享到:
评论

相关推荐

    Zend Framework教程之Zend_Layout布局助手详解

    最后,创建好的项目可以通过本地服务器运行,例如使用XAMPP或MAMP等环境,然后通过浏览器访问本地服务器地址(如***/layout_demo1/public/),即可查看到根据布局模板生成的页面效果。这个页面将包含我们之前在布局...

    ZEND FRAMEWORK 1.11.7 中文参考文档

    •Getting Started with Zend_Layout •Getting Started Zend_View Placeholders •Understanding and Using Zend Form Decorators •Getting Started with Zend_Session, Zend_Auth, and Zend_Acl •Getting ...

    Zend Framework教程之视图组件Zend_View用法详解

    本教程将深入探讨Zend_View的使用方法、工作原理及其与其他组件的交互。 首先,让我们了解Zend_View的基本结构。在Zend Framework的库目录中,`Zend/View`包含了所有与视图相关的类。核心类`View.php`是视图组件的...

    ZendFramework中文文档

    3.1.4. 使用Zend_Auth 3.2. 数据库表认证 3.2.1. 简介 3.2.2. 高级使用:持久一个 DbTable 结果对象 3.2.3. 高级用法示例 3.3. 摘要式认证 3.3.1. 简介 3.3.2. 规范(Specifics) 3.3.3. 身份(Identity) ...

    Zend Framework框架教程之Zend_Db_Table_Rowset用法实例分析

    除了Zend_Db_Table_Rowset组件外,还有诸如Zend_Db_Table、Zend_Controller、Zend_Layout等多种组件和工具可供使用。通过学习这些组件的使用,开发者可以充分利用Zend Framework的优势,编写出更加健壮和可维护的...

    PHP100视频教程77:Zend.framework数据库操作之编辑和视图函数.rar

    此外,你还将了解 Zend_Layout,它是 Zend Framework 中用于管理应用布局的组件,能够帮助开发者更好地控制整个网站的页面结构。 在数据库操作的视图层面,你可能需要创建动态表格或者使用 AJAX 技术来实现无刷新的...

    zend--QuickStart第一部分翻译文档

    开始使用 Zend Framework 创建项目,首先要下载并解压 Zend Framework。如果你选择安装 Zend Server,它会自动包含 Zend Framework,并已设置好 include_path。否则,你需要手动下载并将其路径添加到 PHP 的 include...

    Zend的MVC机制使用分析(一)

    【Zend的MVC机制使用分析】 在PHP的世界中,Zend Framework是一个广泛应用的MVC(Model-View-Controller)框架,它提供了一种组织和管理Web应用程序结构的方式。本篇文章将探讨Zend MVC的核心组件及其工作原理,...

    zend layout.....

    在PHP开发领域,Zend Framework是一个广泛应用的开源框架,它提供了许多强大的工具来简化Web应用程序的构建。"Zend Layout"是该框架的一个...正确理解和使用Zend Layout,将有助于提升PHP开发项目的质量和用户体验。

    达内PHP课程参考.pdf

    课程提到了ZendFramework中包含的MVC组件,如Zend_Controller、Zend_Loader、Zend_Currency、Zend_Db、Zend_Filter、Zend_Form、Zend_Layout、Zend_Registry、Zend_Text和Zend_Validate等,这些都是PHP开发中的重要...

    Zend的MVC机制使用分析(二)

    接着,通过调用Zend_Layout::startMvc()方法初始化布局管理器,该方法接受一个参数数组,其中指定了布局文件的路径,这是进行页面布局配置的步骤。 前端控制器前端控制器Zend_Controller_Front类是整个Zend MVC架构...

    Zend Framework基本页面布局分析

    Zend Framework 的页面布局模块——Zend_Layout——既可以跟 MVC 一起使用,也可以单独使用。本文只讨论与 MVC 一起使用的情况。 1、布局脚本 在 application/views 下创建一个 layouts 的文件夹。主布局脚本 layout...

    Zend Framework教程之MVC框架的Controller用法分析

    通过`Zend_Layout`可以设置全局布局,使整个应用有一致的外观。视图助手(View Helper)如`Form`, `Url`, `HeadTitle`等,帮助我们在视图中创建复杂的HTML元素和URLs。 总结,了解和熟练掌握这些基本概念和用法,...

Global site tag (gtag.js) - Google Analytics