欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

cakephp札记――view层2

程序员文章站 2024-01-04 15:24:22
...
cakephp笔记――view层2
CakePHP 的视图层可以由不同的部分构成。每一部分有不同的用途。
  • views:视图是动作运行的唯一的页面部分。它们构成了应用程序的响应。
  • elements:小的可重用的视图代码。元件通常在视图内部渲染。
  • layouts: 应用程序中打包了呈献逻辑的一些视图接口文件。多数视图在布局内部渲染。
  • helpers:这些类包装了视图层的许多地方都使用的视图逻辑。除了其它事项,CakePHP 的助手帮助你建立表单、构建 AJAX 功能、分页模型数据,或者提供 RSS feed。


    使用视图块

    视图块放在 $scripts_for_layout,并提供一个允许你在视图/布局中任意位置定义插槽或者块的灵活的 API。 块是实现类似边栏这样的东东的理想方法,或者是在布局的头/尾加载资源的好地方。块有两种定义方式:作为捕获块,或者通过直接赋值。start()append()end() 方法是和捕获块一同工作的:

     1 // 建立一个边栏块
     2 $this->start('sidebar');
     3 echo $this->element('sidebar/recent_topics');
     4 echo $this->element('sidebar/recent_comments');
     5 $this->end();
     6 
     8 // 随后添加一个边栏
     9 $this->append('sidebar');
    10 echo $this->element('sidebar/popular_topics');
    11 $this->end();

    也可以多次使用 start() 添加进一个块。 任何时候都可以使用 assign() 清除或者覆盖一个块:

    1 // 清除之前定义的边栏块的内容。
    2 $this->assign('sidebar', '');

    在 2.3 版本中,新加了几个与块一同工作的方法。prepend() 预置一个已存在的块的内容:

    1 // 预置到边栏。
    2 $this->prepend('sidebar', 'this content goes on top of sidebar');

    startIfEmpty() 方法在一个块为空或者未定义时生成一个块。如果块已经存在,则 startIfEmpty() 定义的内容被忽略。当你想要在块不存在时为其定义默认内容时,可以使用这一方法::

     1 // 在视图文件中。
     2 // 创建一个导航栏块。
     3 $this->startIfEmpty('navbar');
     4 echo $this->element('navbar');
     5 echo $this->element('notifications');
     6 $this->end();
     7 
     8 // 在父视图/布局中。
     9 $this->startIfEmpty('navbar');
    10 Default content
    11 $this->end();
    12 
    13 echo $this->fetch('navbar');

    上面的例子中,navbar 块包含在第一部分中添加的内容。一旦在子视图中定义了这个块,其默认内容将被忽略。

    显示块

    可以使用 fetch() 方法显示块。 fetch 将安全地输出一个块,如果块不存在,就返回 ‘’。

    1 echo $this->fetch('sidebar');

    还可以根据一个块是否存在来决定是否显示其内容。要想在布局、继承视图文件中有条件的显示头或者其它标签时,这种方法非常有用:

    1 // 在 app/View/Layouts/default.ctp 中
    2 if ($this->fetch('menu')): ?>
    3 
    class="menu"> 4

    Menu options

    5 echo $this->fetch('menu'); ?> 6
    7 endif; ?>

    在 2.3.0 版,还可以在块没有内容时为其提供默认值。这使为空状态添加占位符变得更容易。可以使用两个参数提供默认值:

    1 
    class="shopping-cart"> 2

    Your Cart

    3 echo $this->fetch('cart', 'Your cart is empty'); 4

    使用 script 和 CSS 文件块

    块替代了被废弃的 $scripts_for_layout 布局变量。HtmlHelper 关联到视图块,它的 script()css()meta()方法在与 inline = false 选项共同使用时使用相同的相同的名字更新一个块。

     1  2 // 在视图文件中。
     3 $this->Html->script('carousel', array('inline' => false));
     4 $this->Html->css('carousel', null, array('inline' => false));
     5 ?>
     6 
     7 // 在布局文件中。
     8 
     9 
    10     11     
    <?php <span style="color:rgb(0,0,255)">echo <span style="color:rgb(128,0,128)">$this</span>->fetch('title'); ?>12 	      echo $this->fetch('script'); ?>
    13 	      echo $this->fetch('css'); ?>
    14     
    15     // 下面是剩余的布局尊容...

    HtmlHelper 还允许你控制使用哪个 scripts 和 CSS 块:

    1 // 在视图文件中。
    2 $this->Html->script('carousel', array('block' => 'scriptBottom'));
    3 
    4 // 在布局文件中。
    5 echo $this->fetch('scriptBottom');
    cakephp札记――view层2

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    相关文章

    相关视频


    网友评论

    文明上网理性发言,请遵守 新闻评论服务协议

    我要评论
  • cakephp札记――view层2

专题推荐

作者信息
cakephp札记――view层2

认证0级讲师

推荐视频教程
  • cakephp札记――view层2javascript初级视频教程
  • cakephp札记――view层2jquery 基础视频教程
  • 视频教程分类
    相关标签: nbsp this gt echo fetch

    上一篇:

    下一篇:

    推荐阅读