cakephp笔记——view层2
CakePHP 的视图层可以由不同的部分构成。每一部分有不同的用途。
视图块放在 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();
也可以多次使用 1 // 清除之前定义的边栏块的内容。2 $this->assign('sidebar', '');
在 2.3 版本中,新加了几个与块一同工作的方法。1 // 预置到边栏。2 $this->prepend('sidebar', 'this content goes on top of sidebar');
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 content11 $this->end();12 13 echo $this->fetch('navbar');
上面的例子中,
显示块
可以使用 1 echo $this->fetch('sidebar');
还可以根据一个块是否存在来决定是否显示其内容。要想在布局、继承视图文件中有条件的显示头或者其它标签时,这种方法非常有用:
1 // 在 app/View/Layouts/default.ctp 中2 <?php if ($this->fetch('menu')): ?>3 <div class="menu">4 <h3>Menu options</h3>5 <?php echo $this->fetch('menu'); ?>6 </div>7 <?php endif; ?>
在 2.3.0 版,还可以在块没有内容时为其提供默认值。这使为空状态添加占位符变得更容易。可以使用两个参数提供默认值:
1 <div class="shopping-cart">2 <h3>Your Cart</h3>3 <?php echo $this->fetch('cart', 'Your cart is empty');4 </div>
1 <?php 2 // 在视图文件中。 3 $this->Html->script('carousel', array('inline' => false)); 4 $this->Html->css('carousel', null, array('inline' => false)); 5 ?> 6 7 // 在布局文件中。 8 <!DOCTYPE html> 9 <html lang="en">10 <head>11 <title><?php echo $this->fetch('title'); ?></title>12 <?php echo $this->fetch('script'); ?>13 <?php echo $this->fetch('css'); ?>14 </head>15 // 下面是剩余的布局尊容...
1 // 在视图文件中。2 $this->Html->script('carousel', array('block' => 'scriptBottom'));3 4 // 在布局文件中。5 echo $this->fetch('scriptBottom');