Zend Framework 1.10.4手册(ZF的快速启动三)



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

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

Zend Framework 应用模板有两种设计模式:Two Step View 和 Composite View。Two Step View 通常和 Transform View 有关,基本的思想是,你的应用程序的视图创建一个表现,然后为了最后的转换(for final transformation)注入到主模板中。而 Composite View 模式则处理一个由一个或者更多个的原子,应用程序视图组合而成的视图。

在 Zend Framework 中,Zend_Layout 组合了这些模式的思想。不同于每一个行为视图需要包括全站的东西,他们可以简单的关注它们自己的责任。

偶尔的,然而,你可能需要应用程序方面的信息出现在你的全站视图脚本中,幸运的是,Zend Framework 提供了大量的视图占位符(placeholder)来允许你从你的行为视图脚本提供这样的信息(应用程序方面的信息 application-specific information)。

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

% zf enable layout
Layouts have been enabled, and a default layout created at application/layouts/scripts/layout.phtml
A layout entry has been added to the application config file.

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

; application/configs/application.ini

; Add to [production] section:
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"

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

; application/configs/application.ini

[production]
; PHP settings we want to initialize
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

这些指令告诉你的应用程序到 application/layouts/scripts 中查找模板视图脚本。如果你检查你的目录树,你将发现这个目录已经为你创建好了,同时带有 layout.phtml 这个文件。

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

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

 

  1. // application/Bootstrap.php   
  2.        
  3.   class Bootstrap extends Zend_Application_Bootstrap_Bootstrap   
  4.   {   
  5.         protected function _initDoctype()   
  6.         {   
  7.         }   
  8.   }  

// application/Bootstrap.php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected function _initDoctype() { } }

 

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

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

; application/configs/application.ini

; Add to [production] section:
resources.view[] =

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

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

 

  1. // application/Bootstrap.php   
  2.        
  3.   class Bootstrap extends Zend_Application_Bootstrap_Bootstrap   
  4.   {   
  5.         protected function _initDoctype()   
  6.         {   
  7.             $this->bootstrap('view');   
  8.             $view = $this->getResource('view');   
  9.             $view->doctype('XHTML1_STRICT');   
  10.         }   
  11.   }  

// application/Bootstrap.php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected function _initDoctype() { $this->bootstrap('view'); $view = $this->getResource('view'); $view->doctype('XHTML1_STRICT'); } }

 

现在我们已经实例化了 Zend_Layout 并且设置了 Doctype,让我们创建我们的全站模板:

 

  1. <!-- application/layouts/scripts/layout.phtml -->   
  2.   <?php echo $this->doctype() ?>   
  3.   <html xmlns="http://www.w3.org/1999/xhtml">   
  4.   <head>   
  5.   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />   
  6.   <title>Zend Framework Quickstart Application</title>   
  7.   <?php echo $this->headLink()->appendStylesheet('/css/global.css') ?>   
  8.   </head>   
  9.   <body>   
  10.   <div id="header" style="background-color: #EEEEEE; height: 30px;">   
  11.   <div id="header-logo" style="float: left">   
  12.   <b>ZF Quickstart Application</b>   
  13.   </div>   
  14.   <div id="header-navigation" style="float: right">   
  15.   <a href="<?php echo $this->url(   
  16.   array('controller'=>'guestbook'),   
  17.   'default',   
  18.   true) ?>">Guestbook</a>   
  19.   </div>   
  20.   </div>   
  21.      
  22.   <?php echo $this->layout()->content ?>   
  23.      
  24.   </body>   
  25.   </html>  

<!-- application/layouts/scripts/layout.phtml --> <?php echo $this->doctype() ?> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Zend Framework Quickstart Application</title> <?php echo $this->headLink()->appendStylesheet('/css/global.css') ?> </head> <body> <div id="header" style="background-color: #EEEEEE; height: 30px;"> <div id="header-logo" style="float: left"> <b>ZF Quickstart Application</b> </div> <div id="header-navigation" style="float: right"> <a href="<?php echo $this->url( array('controller'=>'guestbook'), 'default', true) ?>">Guestbook</a> </div> </div> <?php echo $this->layout()->content ?> </body> </html>

 

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

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

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

 

 

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999.xhtml">  
  2.   <head>  
  3.   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  4.   <title>Zend Framework Quickstart Application</title>  
  5.   <link href="/css/global.css" media="screen" rel="stylesheet" type="text/css" /></head>  
  6.   <body>  
  7.   <div id="header" style="background-color: #EEEEEE; height: 30px;">  
  8.   <div id="header-logo" style="float: left">  
  9.   <b>ZF Quickstart Application</b>  
  10.   </div>  
  11.   <div id="header-navigation" style="float: right">  
  12.   <a href="/guestbook">Guestbook</a>  
  13.   </div>  
  14.   </div>  
  15. <style>  
  16.  a:link,   
  17.   a:visited   
  18.   {   
  19.   color: #0398CA;   
  20.   }   
  21.  span#zf-name   
  22.   {   
  23.   color: #91BE3F;   
  24.   }   
  25.  div#welcome   
  26.   {   
  27.   color: #FFFFFF;   
  28.   background-image: url(http://framework.zend.com/images/bkg_header.jpg);   
  29.   width:  600px;   
  30.   height: 400px;   
  31.   border: 2px solid #444444;   
  32.   overflow: hidden;   
  33.   }   
  34.  div#more-information   
  35.   {   
  36.   background-image: url(http://framework.zend.com/images/bkg_body-bottom.gif);   
  37.   height: 100%;   
  38.   }   
  39. </style>  
  40.   <center>  
  41.   <div id="welcome">  
  42.   <br />  
  43.   <h1>Welcome to the <span id="zf-name">Zend Framework!</span></h1>  
  44.   <h3>This is your project's main page</h3><br /><br />  
  45.   <h4><a href="zf.html">click here</a></h4>  
  46.   <div id="more-information">  
  47.   <br />  
  48.   <img src="http://framework.zend.com/images/PoweredBy_ZF_4LightBG.png" /><br /><br />  
  49.   Helpful Links: <br />  
  50.   <a href="http://framework.zend.com/">Zend Framework Website</a> |   
  51.   <a href="http://framework.zend.com/manual/en/">Zend Framework Manual</a>  
  52.   </div>  
  53.   </div>  
  54.   </center>  
  55.   </body>  
  56.   </html>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于微信小程序的家政服务预约系统采用PHP语言和微信小程序技术,数据库采用Mysql,运行软件为微信开发者工具。本系统实现了管理员和客户、员工个角色的功能。管理员的功能为客户管理、员工管理、家政服务管理、服务预约管理、员工风采管理、客户需求管理、接单管理等。客户的功能为查看家政服务进行预约和发布自己的需求以及管理预约信息和接单信息等。员工可以查看预约信息和进行接单。本系统实现了网上预约家政服务的流程化管理,可以帮助工作人员的管理工作和帮助客户查询家政服务的相关信息,改变了客户找家政服务的方式,提高了预约家政服务的效率。 本系统是针对网上预约家政服务开发的工作管理系统,包括到所有的工作内容。可以使网上预约家政服务的工作合理化和流程化。本系统包括手机端设计和电脑端设计,有界面和数据库。本系统的使用角色分为管理员和客户、员工个身份。管理员可以管理系统里的所有信息。员工可以发布服务信息和查询客户的需求进行接单。客户可以发布需求和预约家政服务以及管理预约信息、接单信息。 本功能可以实现家政服务信息的查询和删除,管理员添加家政服务信息功能填写正确的信息就可以实现家政服务信息的添加,点击家政服务信息管理功能可以看到基于微信小程序的家政服务预约系统里所有家政服务的信息,在添加家政服务信息的界面里需要填写标题信息,当信息填写不正确就会造成家政服务信息添加失败。员工风采信息可以使客户更好的了解员工。员工风采信息管理的流程为,管理员点击员工风采信息管理功能,查看员工风采信息,点击员工风采信息添加功能,输入员工风采信息然后点击提交按钮就可以完成员工风采信息的添加。客户需求信息关系着客户的家政服务预约,管理员可以查询和修改客户需求信息,还可以查看客户需求的添加时间。接单信息属于本系统里的核心数据,管理员可以对接单的信息进行查询。本功能设计的目的可以使家政服务进行及时的安排。管理员可以查询员工信息,可以进行修改删除。 客户可以查看自己的预约和修改自己的资料并发布需求以及管理接单信息等。 在首页里可以看到管理员添加和管理的信息,客户可以在首页里进行家政服务的预约和公司介绍信息的了解。 员工可以查询客户需求进行接单以及管理家政服务信息和留言信息、收藏信息等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值