php manual(6)
时间:2007-07-19 来源:skilldream
第八章 Views
1.Views
一个View就是一个页面的模版,经常以action的名字来命名。举例来说,Postscontroller::add()方法的view存放在/app/views/posts/add.thtml。Cake的views文件都是简单的PHP文件,所以你可以在里面使用任何PHP代码,几乎所有的view文件都包含HTML,一个view可以使特定数据集的任何体现,包括XML,图片等等
在view的模版文件中,你可以从对应的Model中使用数据,这个数据以数组$data的形式传递过来,你在controller中使用set()传递过来的任何数据在view中都可以使用
注意
HTML helper默认情况下在任何一个view都是可用的。而且是views中使用最多的。它创建forms包括scripts和media、链接以及数据正确性检查中都非常有用。参考第九章第1.1节可以了解HTML helper更多的内容
views中许多可用的发放都是Helpers提供的。Cake提供了很多的helpers(参考第九章),你也可以引用自己定义的。因为views不应该包含过多的逻辑,所以views类中并没有很多public的方法。其中一个有用的方法就是renderElement(),这个方法我们在1.2节中讨论
1.1 Layouts
一个布局(layout)包括了围绕view的所有代码。你想在view中见到的所有东西都应该被放在你的layout中。 布局文件位于/app/views/layouts。
Cake的默认layout可以在/app/views/layouts/default.thtml被新的默认layout重写。一旦一个新的默认layout创建,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">
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>
你可以为你的cake站点创建任意多的layout,你所要做的就是把他们放到app/views/layouts这个目录下,并在使用controller actions的时候使用controllers的$layout
变量或者是setLayout()方法
举例来说,如果站点的一部分需要包含一个小的广告banner空间。可以创建一个新的带有小的广告空间的layout,并将这个layout设置成为controller actions将要使用的layout.方法如下:
var $layout = 'default_small_ad';
1.2 Elements
很多应用都有一些很多页面都会重复的代码段,有时候在layout中的位置不相同。Cake可以帮助你重现这些需要复用的部分。这些复用的部分叫做元素(Elements)。广告,帮助框,导航控制条,额外的菜单,插图编号在cake中就被实现为元素。一个元素就是其他views可以引用的小型view(a mini-view)
元素位于 /app/views/elements文件夹,并且都有.thtml的文件扩展名
例8.1 Calling an Element without parameters
php echo $this->renderElement('helpbox'); ?>
例 8.2 Calling an Element passing a data array
php echo
$this->renderElement('helpbox', array("helptext" => "Oh, this text is very helpful."));
?>
在一个元素文件中,所有传递的变量名称都是以通过传递过来数组的keys名获得(和controller中的set()在views中起到的作用很类似)。上面举的这个例子中 /app/views/elements/helpbox.thtml文件就会使用$helptext变量。当然,传递一个数组到元素文件会更有用的多。
使用元素可以使得view更易读,同时可以在一个文件中重复使用元素。他们也可以帮助你在网站建设中复用部分内容。
相关阅读 更多 +
排行榜 更多 +