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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值