Zend_Controller Quick Start
来源:互联网 发布:速成英语学习软件 编辑:程序博客网 时间:2024/04/19 17:59
Zend_Controller Quick Start
P.S:学习Zend1.12,阅读文档时翻译,关键词语并没有翻译,这样比较好理解(2017.02.15)
- Zend_Controller Quick Start
- 介绍
- Quick Start
- Create the Filesystem Layout
- Set the Document Root
- Create the Rewrite Rules
- 创建Bootstrap File引导程序文件
- 创建默认的Action controller
- 创建View Script
- 创建Error Controller
- 浏览你的网站
介绍
Zend_controller 是Zend框架MVC系统的核心。MVC代表Model-View-Controller,是一种设计模式,目的是从视图逻辑(display logic) 中分离出应用逻辑(application logic)。
Zend_Controller_Front实现的是Front Controller模式(参见P of EAA),所有的请求都会被front controller截获,并被分派(dispatch)到对应URL的Action Controller。
Zend_Controller拥有可扩展的设计理念,通过子类继承现有类,来实现基于the controller family of classes的多种接口(interfaces)和抽象类(abstract classes),或者通过写plugins or action helpers来增加系统的功能性。
Quick Start
如果你需要更多深层的信息,看接下来的sections。如果你只是想快速建立并运行,请继续读。
Create the Filesystem Layout
第一步是创建你的文件系统布局(file system layout)。典型的布局如下
application/ controllers/ IndexController.php models/ views/ scripts/ index/ index.phtml helpers/ filters/public/(这里名字可设置,源文档是http) .htaccess index.php
Set the Document Root
在你的web server中,设置document root 为public目录。。。
Create the Rewrite Rules
修改public/.htaccess 文件如下(默认的.htaccess写法,没有它就不能正常访问)
RewriteEngine OnRewriteCond %{REQUEST_FILENAME} -s [OR]RewriteCond %{REQUEST_FILENAME} -l [OR]RewriteCond %{REQUEST_FILENAME} -dRewriteRule ^.*$ - [NC,L]RewriteRule ^.*$ index.php [NC,L]
Note:Learn about mod_rewrite
上述的rewrite规则允许访问vhost下所有文件。如果有哪些文件你不希望这样做,你可能想要更严格的rules。去Apache官网学习更多关于mod_write
如果使用IIS7.0,使用以下rewrite配置:
<?xml version="1.0" encoding="UTF-8"?><configuration> <system.webServer> <rewrite> <rules> <rule name="Imported Rule 1" stopProcessing="true"> <match url="^.*$" /> <conditions logicalGrouping="MatchAny"> <add input="{REQUEST_FILENAME}" matchType="IsFile" pattern="" ignoreCase="false" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" pattern="" ignoreCase="false" /> </conditions> <action type="None" /> </rule> <rule name="Imported Rule 2" stopProcessing="true"> <match url="^.*$" /> <action type="Rewrite" url="index.php" /> </rule> </rules> </rewrite> </system.webServer></configuration>
以上的Rules将会按照要求去路由请求(route requests)存在的资源(存在的符号链接(symlinks)、非空文件、非空文件夹),和一些其他的通往front controller 的 requests 。
Note:以上的rewrite rules是Apache的;如果是其他web server的例子,参见router documentation
创建Bootstrap File(引导程序文件)
Bootstrap文件是route所有request的页面——public/index.php。你可以选择用编辑器打开public/index.php并添加如下:
Zend_Controller_Front::run('/path/to/app/controllers');
这将实例化和调用(dispatch)那些route request到action controller的front controller。
创建默认的Action controller
在讨论Action controller之前,你应该先理解request是如何在zend框架中route的。默认情况下URL path的第一段是通向controller的,第二段通向action。例如,给出URL http://framework.zend.com/roadmap/components,path就是roadmap/components,会导向controller roadmap和action组件。如果没有提供action,默认提供index为action,如果没有提供controller,提供index为默认controller(遵守Apache规定自动导向DirectoryIndex)。
Zend_Controller的dispatcher将会把controller value 和maps带到一个class中。默认情况下,这会把controller标题封装(Title-case),尾部跟上一个Controller。因此,刚才的例子中,我们的controller会导向类RoadmapController。
同样的,action value 会导向controller类中的一个method。默认情况下,这个value是小写的,还会在后面跟上Action。因此上个例子中,这个action组件变为componentsAction(),最终的method成为RoadmapController::componentsAction()。
So,接下来,现在让我们创建一个默认action controller 和action method。鉴于之前的Note,默认的controller和action都称为index。打开文件application/controllers/IndexController.php
,并添加如下:
/** Zend_Controller_Action */class IndexController extends Zend_Controller_Action{ public function indexAction() { }}
默认情况下,ViewRenderer(视图渲染器) action helper 是可用的。意思就是说简单定义一个action method和对应的view script,你将立刻得到提供的content。默认情况下(怎么老是这句)Zend_View是在MVC中作为视图层的。这个ViewRenderer做了一些magic的事,使用了controller name(e.g.,index)和现在的action name(e.g.,index)去决定使用什么模板(template)。默认情况下,模板(template)在.phtml扩展名的结尾,也就是说在上面的例子中,模板(template)index/index.phtml
将被渲染(renderered)。另外,ViewRenderer自动假设目录views/为同级controller目录的基础视图目录,实际的view脚本存放在views/scripts/
子目录。因此,我们可以在application/views/scripts/index/index.phtml
里找到我们的模板。
创建View Script
在之前提到的章节(quick start)里,view脚本都放在application/views/scripts/
;对应默认controller和action的view脚本在application/views/scripts/index/index.phtml
。创建并写点HTML:
<!DOCTYPE htmlPUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>My first Zend Framework App</title></head><body> <h1>Hello, World!</h1></body></html>
就是个hello world。
创建Error Controller
默认情况下,error handler plugin(错误处理程序组件)是已经注册好了的。这个组件是个用来处理error的controller。默认情况下,它假设ErrorController是一个默认模块并带有如下errorAction()方法:
class ErrorController extends Zend_Controller_Action{ public function errorAction() { }}
按照已经假定好的目录布局,这个文件应该放在application/controllers/ErrorController.php
。你将需要创建个view视图在application/views/scripts/error/error.phtml
;样例内容可能是这样:
<!DOCTYPE htmlPUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Error</title></head><body> <h1>An error occurred</h1> <p>An error occurred; please try again later.</p></body></html>
浏览你的网站
围绕着你第一个建立的controller和view,你可以启动你的浏览器去浏览你的网站。假设example.com是你的域名,如下所有的URLs都可以访问:
http://example.com/
http://example.com/index
http://example.com/index/index
现在,你可以去创建更多的controllers和action方法了。Congratulations!
- Zend_Controller Quick Start
- Quick Start
- Quick Start
- WAP Push Quick Start
- Purify Quick Start
- [Avalon] Quick Start
- CodeSmith Quick Start Guide
- JavaMail quick start
- Ibatisnet Quick Start
- Ibatisnet Quick Start
- KGDB Quick Start
- dom4j Quick start
- Resin Installation Quick Start
- iBatisnet Quick Start(转)
- OpenLDAP Quick Start Guide
- squid quick start
- DOJO Quick Start
- HII Tools Quick Start
- app的执行
- 试着用React写项目-利用styled-components解决样式问题
- 不要用for in语句对数组进行遍历
- TabLayout+ViewPager撤消左右滑动切换功能
- APP成本(1)
- Zend_Controller Quick Start
- [bzoj4277]Ciecie
- 求将n个数变成上升序列时的最少交换次数
- JS-移动端适配字体
- MapReduce的一点理解
- Java--构造方法(Constructor)、重载
- 趣味职场俚语笔记(04_That Spot Has a Catchy Jingle)
- tcp 半关闭
- Caused by: java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/catal