Yii2基础笔记(四):深入理解布局文件
2015-11-09 09:40
567 查看
布局文件:
views/layouts/main.php 主要包括页面显示的头部(导航栏),尾部(footer)
一、自定义布局文件的使用:
① 在controller的action中添加:
② 让所有的action使用同一个布局文件:
在controller中直接添加属性:
或 在controller初始化方法中定义:
③ 不定义,则使用默认布局文件:
查找顺序如下:
先查看当前Controller中是否定义布局变量;
如果有就直接使用,否则会查找其所在Module模型中定义的布局变量;
如果还没有,会查找改module的父类Module中定义的布局变量;
④ layout变量的空值:
a. false,不使用布局文件;
b. null,使用当前module模块中的布局文件;
⑤ layout变量的值:与查找view文件类似
a.‘main’ //直接用字符串,表示当前module的布局文件
b. @app/views/layouts/main.php //别名
c.‘/main’ //加斜杠表示当前app下的布局文件
注意,布局文件可以层层嵌套,比如当前有个test.php的布局文件
里面写法是:
其工作过程是:view文件render过来产生的content变量,先在这个test.php中渲染,
渲染的结果又作为一个新的content在当前app下的main.php布局文件中渲染;
二、布局的更高级用法:
yii2默认只能在布局文件中接收一个名称为$content的变量,这个变量是render指定的view文件产生的;
现在可以通过在view文件中写以下代码传递多个变量给布局文件渲染:
最后在布局文件中,获取。
详细参考:
http://github.com/yiifans/lulucms/blob/master/components/widgets/InhriLayout.php
views/layouts/main.php 主要包括页面显示的头部(导航栏),尾部(footer)
一、自定义布局文件的使用:
① 在controller的action中添加:
$this->layout = '指定的布局文件';//不需要加php后缀名
不同的action可以指定各自的布局文件。
② 让所有的action使用同一个布局文件:
在controller中直接添加属性:
public $layout = '统一的布局文件’;//不需要加php后缀名
或 在controller初始化方法中定义:
public function init(){ parent::init(); $this->layout ='main'; }
③ 不定义,则使用默认布局文件:
查找顺序如下:
先查看当前Controller中是否定义布局变量;
如果有就直接使用,否则会查找其所在Module模型中定义的布局变量;
如果还没有,会查找改module的父类Module中定义的布局变量;
④ layout变量的空值:
a. false,不使用布局文件;
b. null,使用当前module模块中的布局文件;
⑤ layout变量的值:与查找view文件类似
a.‘main’ //直接用字符串,表示当前module的布局文件
b. @app/views/layouts/main.php //别名
c.‘/main’ //加斜杠表示当前app下的布局文件
注意,布局文件可以层层嵌套,比如当前有个test.php的布局文件
里面写法是:
<?php $this->beginContent('@app/views/layouts/main.php',['需要传递的变量' => 变量值]);?> <div>......</div> <?php echo $content ?> <?php $this->endContent(); ?>
其工作过程是:view文件render过来产生的content变量,先在这个test.php中渲染,
渲染的结果又作为一个新的content在当前app下的main.php布局文件中渲染;
二、布局的更高级用法:
yii2默认只能在布局文件中接收一个名称为$content的变量,这个变量是render指定的view文件产生的;
现在可以通过在view文件中写以下代码传递多个变量给布局文件渲染:
<?php $this->blocks['content'] = ''; $this->blocks['other'] = ''; ?> <?php InhritLayout::begin(['viewFile' => '@app/views/layouts/main.php']); ?> <?php $this->beginBlock('contetn');?> 这里是指定的content需要传递的变量 <?php $this->endBlock(); ?> <?php $this->beginBlock('other');?> 这里是额外要在布局文件中渲染的东西 <?php $this->endBlock(); ?> <?php InhritLayout::end(); ?>
最后在布局文件中,获取。
详细参考:
http://github.com/yiifans/lulucms/blob/master/components/widgets/InhriLayout.php
相关文章推荐
- Yii2基础笔记(三):深入理解Yii2中的view
- Yii2基础笔记(二):数据库操作方法的优化
- Yii2基础笔记(一):Yii2默认模板入门使用
- 五种常见的 PHP 设计模式
- php中全等于===和等于==的区别
- PHP编程开发怎么提高编程效率 提高PHP编程技术
- php开发工具有哪五款
- 再推荐十款免费的php开发工具
- PHP中使用GD库绘制折线图 折线统计图的绘制方法
- php 常用函数
- ajax+php无刷新文件上传(ajaxuploadfile)
- vsftpd报530 permission deniedt与530 login incorrect错误
- PHP CLI模式下的多进程应用
- ThinkPHP中foreach和volist的区别
- Ubuntu中PHP如何开启错误提示输出?
- 利用NuSoap开发WebService(PHP) 分类: php 2010-09-08 12:00 5832人阅读 评论(1) 收藏 举报 webservicephpsoapstringencod
- php multiple cookie问题
- PHP中的urlencode,rawurlencode和JS中的encodeURI,encodeURIComponent
- php实现无限极分类
- php的冒泡排序