Zend Framework 1.10.1 快速入门之三: 创建一个布局

您可能注意到前面一节提到视图脚本是 HTML 片断——不是完整的网页。这是出于设计的需要:我们希望动作返回的内容只和动作本身有关,而不是返回整个应用程序。

现在我们必须把得到的内容合成到一个完整的 HTML 网页。我们也想为应用程序创建一个统一的外观和风格。我们将使用一个全站布局来完成这些任务。

Zend Framework 使用两种设计模式来实现布局:Two Step View 和 Composite View。Two Step View 通常和 Transform View 模式联系在一起,它的基本的思想是:应用程序的视图创建一个表现,然后注入到主视图中。而 Composite View 模式则处理一个由一个或者更多个的原子(即应用程序视图)组合而成的视图。

在 Zend Framework 中,Zend_Layout 组合了这些模式的思想。每一个动作视图脚本不需要包括全站的东西,它们(动作视图脚本)可以简单的关注自己的责任。

偶尔的,您可能需要应用程序方面的信息出现在全站视图脚本中,幸运的是,Zend Framework 提供了大量的视图占位符(placeholder),从而可以通过动作视图脚本提供这样的信息(应用程序方面的信息 application-specific information)。

为了开始使用 Zend_Layout,首先我们需要通知 bootstrap 来使用 Layout 资源(Bootstrap 类定义了什么资源和组件将要初始化)。这可以通过使用 zf enable layout 命令来完成:

正如命令行提示的那样,application/configs/application.ini 被更新了,现在 production 部分包括了以下代码:

最后的 INI 文件应该看起来是这样的:

这些指令告诉应用程序到 application/layouts/scripts 中查找布局视图脚本。现在这个目录已经创建好了,同时带有 layout.phtml 这个文件。

我们也想应用程序有一个 XHTML DocType 声明。为了做到这个,我们需要添加一个资源到 bootstrap。

添加一个资源到 bootstrap 的最简单的方法是创建一个以 _init 短语开头的私有方法。在这个例子中,我们想要初始化 doctype,所以我们在 bootstrap 类中创建一个 _initDoctype() 方法:

在这个方法内,我们需要提示视图来使用合适的 doctype。但是视图对象从哪里来?简单的方法是,初始化视图(View)资源;一旦完成,我们可以从 bootstrap 中捕捉视图对象,然后使用它。

为了初始化视图资源,把以下代码添加到 application/configs/applicationn.ini 文件中,在 production 部分下:

这将告诉我们:不带选项初始化视图([] 提示 view 是一个数组,我们什么都没有传递给它)。

现在我们有了一个视图,让我们更新 _initDoctype() 方法。在它里面,我们首先确保视图资源已经在运行,捕获视图对象,然后配置它:

现在我们已经初始化了 Zend_Layout 并且设置了 Doctype,让我们创建全站布局:

我们使用 layout() 视图助手捕获应用程序的内容,同时访问 content 键。如果愿意,可以呈现其它的片断,但在大多数情况下,这是所需的全部了。

同时注意 headLink() 占位符的使用。这是生成 HTML   <link> 元素的简单方式,同时还可以在应用程序内跟踪它们。如果需要为一个单独的动作增加额外的 CSS 样式表,可以这样做,它会在最后的呈现页面中出现。

注意,检查
现在打开 http://localhost 并检查源代码,应该看见 XHTML 头部,标题和正文部分。

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页