大锤 / mvc
Sledgehammer MVC模块:提供模型视图控制器架构
Requires
- sledgehammer/core: >=18
Suggests
- sledgehammer/minify: Minify assets like css, javascript and images
README
MVC即模型视图控制器
模型
这些是您自己编写的类。如果您需要数据库持久化模型,请查看Sledgehammer ORM模块。
视图
"视图"是由组件组成的。
每个组件都有一个"render"函数,它将输出直接发送到浏览器(回声),并且没有返回值。
Component->getHeaders()
组件有一个可选的getHeaders()函数,它在render()之前调用,并将信息传递给组件层次结构中更高的组件。这可以添加"HTTP头部",追加样式表和其他必须注入到<head>
的配置。
'http' 这是一个与header()一起发送的数组。'meta' 这是一个作为标签添加到中的数组。'css' 这是一个作为添加到中的url数组。'link' 这是一个作为添加到中的标签数组。'title' 这是设置到中的<title>
。
控制器
Sledgehammer没有路由类,所有请求都由Website
的子类处理,但通过使用Folder
类实现模块化。
映射示例
"/about.html" URL映射到MyWebsite->about()。如果没有找到公开的about方法,则调用file()方法。默认情况下,file()返回一个渲染404错误的组件。
"/blog/author.html"映射到MyWebsite->blog_folder()。如果没有找到公开的blog方法,则调用folder()方法。
blog_folder()可以直接返回一个组件,也可以创建一个Folder对象来处理"blog/"文件夹内的所有请求。URL中的"author.html"部分映射到MyBlogFolder->author()。如果没有找到公开的about方法,则调用MyBlogFolder上的file()方法。
范围
网站
处理请求的全过程。
发送到浏览器 保存到磁盘
HtmlDocument
处理getHeaders()的值,在doctype模板中。
安装
将mvc文件夹放置在与Sledgehammer核心文件夹相同的文件夹中。
要为MVC项目生成脚手架,请运行
php sledgehammer/utils/empty_project.php
Twitter Bootstrap
约束了来自http://twitter.github.com/bootstrap/的所有css和javascript,并添加了Sledgehammer\View类。
$pagination = new Pagination(5, 1);
变为
<div class="pagination">
<ul>
<li class="disabled"><a href="#">«</a></li>
<li class="active"><a href="?page=1">1</a></li>
<li><a href="?page=2">2</a></li>
<li><a href="?page=3">3</a></li>
<li><a href="?page=4">4</a></li>
<li><a href="?page=5">»</a></li>
</ul>
<div>