cakephp 1.3 Views
Section 1 Views 视图
一个view是一个页面模版,通常按action的名字命名。例如,PostsController::add的view位于/app/views/posts/add.thtml。Cake view是非常简单的PHP文件,因此你可以在其中使用任何PHP代码。尽管你的大多数view文件包含HTML代码,一个view可以是对一个特定数据集的任意表示,XML,图像,等等。
在view模版文件里,你可以使用相关model提供的数据。这些数据通过$data数组传递过来。你在controller里边使用set()方法递交给view的所有数据也是可用的。
默认情况下,HTML helper对于每一个view都是可用的,并且到目前为止它是view里边最常用的helper。它对于创建表单,插入客户端脚本和多媒体,协助数据验证都是非常有用的。关于HTML helper的详细讨论,请参见“Helpers”章的Section 1。
在view里使用的大多数功能都是由helper提供的。Cake提供了许许多多的helper(在“Helpers”章里讨论),并且你也可以定义自己的helper。由于view不应该包含太多业务逻辑,view类并没有提供太多广泛使用的公共方法。其中一个很有用的是renderElement(),我们将在section 1.2看到它。
Layouts 布局
一个layout(布局)包含了所有包裹在view之外的表现代码。Layout文件都放在/app/views/layouts目录里。你可以重写一个默认的layout来取代位于/app/views/layouts/default.thtml的Cake默认layout。一但创建了新的默认layout,当页面render的时候controller view的内容会被替换到默认layout中。
当你创建一个layout的时候,你需要告诉Cake在哪里放置controller view的内容:确保你的layout包含$content_for_layout(还有$title_for_layout,不过它是可选的)。以下是一个默认layout的示例:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title><?php echo $title_for_layout?></title> <link rel="shortcut icon" href="favicon.ico" type="image/x-icon"> </head> <body><!-- If you'd like some sort of menu to show up on all of your views, include it here --> <div id="header"><div id="menu">...</div> </div><!-- Here's where I want my views to be displayed --> <?php echo $content_for_layout ?><!-- Add a footer to each displayed page --> <div id="footer">...</div></body> </html>
要为layout设置标题(title),最简单的办法是在controller里使用$pageTitle变量来设置。
class UsersController extends AppController
{ function viewActive() { $this->pageTitle = 'View Active Users'; }
}
只要需要,你可以随意为你的Cake站点创建任意数量的layout,只要把他们放在app/views/layouts目录,并且在你的controller action里边使用controller的$layout变量或者setLayout()方法来切换layout。
比如,我的站点中有一个包含小型广告区域的部分,我也许可以创建一个具有更小的广告区域的layout并且使用以下语句来指定它为所有controller action的layout:
var $layout = 'default_small_ad';
Elements 元素
许多应用程序都会有一些在各个页面见不停重复的表现层代码,有时他们只是在layout里的不同地方。Cake可以帮助你复制站点中的某些区块,如果需要的话。 我们将这些可重用的页面区块称为Element(元素)。广告,帮助框,导航栏,菜单和插图都被Cake实现成为element。一个element其实可以看作是可以包含在其他view里边的mini-view。
所有element都生活在/app/views/elements目录下,并且文件扩展名为.thtml。
默认情况下,element访问不到任何数据。想让它具有对数据的访问权,你需要将数据放在数组里传递给它,并不要忘了为这些数据带上名字(键-值对数组)。
无参数地调用一个element
<?php echo $this->renderElement('helpbox'); ?>
调用一个element,并传入包含数据地数组
<?php echo
$this->renderElement('helpbox', array("helptext" => "Oh, this text is very helpful.")); ?>
在element文件里,所有传入的变量都可以通过他们在参数数组里的键名来使用(有点类似于在view里边使用controller用set()设置的变量)。在上边这个例子中,/app/views/elements/helpbox.thtml文件可以使用$helptext变量。当然,如果传递一个数组给element会更佳有用。
element使view具有更佳的可读性,而把render重复的element的部分放在对应的element文件中。它们也可以帮助你重用站点中的内容区块。
来源: http://www.1x3x.net/cakephp/view.html
cakephp 1.3 Views相关推荐
- cakephp视图用php文件,CakePHP - 扩展视图( Extending Views)
CakePHP - 扩展视图( Extending Views) 很多时候,在制作网页时,我们希望在其他页面中重复某些页面. CakePHP具有这样的功能,可以在另一个视图中扩展视图,为此,我们不需要 ...
- CakePHP你必须知道的21条技巧
原文链接:http://www.avatarfinancial.com/pages/cake/ 这篇文章可以说是CakePHP教程中最经典的了.虽然不是完整的手把手系列, 但作者将自己使用CakePH ...
- cakephp 1.3 Models
Section 1 What is a model? 什么是model呢?model就是MVC模式中的M. Model用来做什么呢?它将领域逻辑从表现层和独立的业务逻辑中剥离出来. Model通常是数 ...
- cakephp 1.3 Controller
Controller 一个controller用于管理应用程序里某一方面的逻辑.大多数来说,controller被用于管理独立model的逻辑.比如,当你想构建一个管理录像带的站点,你也许会有一个Vi ...
- cakephp 1.3 配置CakePHP
Section 1 数据库配置 app/config/database.php 这个文件包含了所有的数据库配置.新安装的Cake是没有datebase.php这个文件的,你需要从database.ph ...
- CakePHP 中文手册
基本概念 Section1 简介 本章节篇幅很短,简单的介绍一下MVC概念以及在cake中是如何实现的.如果你对MVC模式很陌生,这个章节将会非常适合你.我们由 常规的MVC概念开始我们的讨论,然后用 ...
- CakePHP中文手册【翻译】-基本概念
基本概念 第1节 介绍 本章是对MVC概念的一个短小而且随意的介绍,因为这些概念在Cake里得到实现.如果你是一个MVC模式的新人,很显然本章就是为你而写的.我们从MVC的一般概念的讨论开始,然后以我 ...
- CakePHP中文手册【翻译】-Cake Blog创建指南
Cake Blog创建指南 第1节 介绍 欢迎来到Cake.你可能正在使用本指南,因为你想学习更多关于Cake是如何工作的知识.其目的就是为了提高效率,并且让编写代码变得更加有趣.我们希望当你深入代码 ...
- lamp+cakephp下配置fckeditor详解 --by heng
1.登录http://ckeditor.com/download/ 下载FCKeditor2.6.6(在页面最下方) 2.解压FCKeditor_2.6.6.zip得到fckeditor文件夹 3.拷 ...
最新文章
- 计算机在医疗方面的应用与前景,计算机在医疗卫生领域应用现状及前景.docx
- mysql事务实现数据更新_MySql事务select for update及数据的一致性处理讲解
- SAP各种凭证的取消小结
- 微软2020开源回顾:止不住的挨骂,停不下的贡献
- vue旋转图片功能,旋转放大图片功能;vue旋转放大div元素
- ajax 输入不为空,ajax POST响应为空
- android 表情识别,基于Android平台的人脸表情识别系统的设计与实现
- 数据库errno: 1045的解决办法
- Eclipse超级完美汉化教程
- mysql 加锁 索引_把MySQL中的各种锁及其原理都画出来
- 华为云盘里面的照片怎么导出来_华为手机误删照片,怎么恢复?别急!只需点击这里...
- 查看计算机桌面隐藏文件夹,电脑怎么查看隐藏文件(隐藏文件夹显示方法)
- 应用层下的人脸识别(三):人脸比对
- 【POJ 3764】 The xor-longest path
- Luogu P3369 【模板】普通平衡树
- 隐形的翅膀-张韶涵 (歌词)
- 洛谷T46780 ZJL 的妹子序列(生成函数)
- 计算机系统如何重置,如何重置电脑系统?看这里1分钟教会你!
- QImage 图片分割、保存
- DevExpress 20.2.3有源码吗?一名鱼友刚刚问我的