yii 布局文件使用说明

1.配置布局变量:
1.1Controller里面定义布局变量
1.直接加一个公有变量public $layout = '路径'。(默认是当前控制器目录下的views目录下的 layouts文件夹)
如果只想在某个action中改变布局,那么变量就设置在action中
2.或者通过控制器的inint()方法设置该变量
1.2Mudule(模块)中定义布局变量。直接在其(如:AdminModule.php)init()方法里面定义$layout变量的值
如何写layout变量的值:
其有三种:1.false:不使用布局文件($layout=false;)
2.null,使用Module中定义的布局文件
3.自负串:制定布局文件。其字符串的形式如下:
3.1、别名开头,制定布局文件路径(public $layout='@app/Module/admin/views/ayouts/main')
3.2、/开头,指定app下面的views里面的layouts文件夹下的布局文件(public $layout='/main')
3.3、直接使用布局文件的名字如:'main',则表示使用Module下的布局文件(public $layout='main')
此三种路径写法的源码如下:
if (strncmp($layout, '@', 1) === 0) {
    $file = Yii::getAlias($layout);
} elseif (strncmp($layout, '/', 1) === 0) {
    //echo Yii::$app->getLayoutPath() . DIRECTORY_SEPARATOR;exit();
    $file = Yii::$app->getLayoutPath() . DIRECTORY_SEPARATOR . substr($layout, 1);
} else {
    $file = $module->getLayoutPath() . DIRECTORY_SEPARATOR . $layout;
}
2.查找布局文件的原理:
2.1、先看当前controller里面有没有定义布局文件
2.2、如果没有,查找所在Module里面有没有定义布局文件
2.3、查找父级Module里面有没有定义布局文件
3.布局文件的嵌套使用
有时候你想嵌套一个布局到另一个,例如,在Web站点不同地方,想使用不同的布局, 同时这些布局共享相同的生成全局HTML5页面结构的基本布局,可以在子布局中调用 yii\base\View::beginContent() 和yii\base\View::endContent() 方法,如下所示:
在views布局文件里面的使用如下:
<?php $this->beginContent('@app/views/layouts/main.php');?>//必须加.php
<?php echo $content;?>
<?php $this->endContent();?>

如上所示,子布局内容应在 yii\base\View::beginContent() 和 yii\base\View::endContent() 方法之间,传给 yii\base\View::beginContent() 的参数指定父布局,父布局可为布局文件或别名。

使用以上方式可多层嵌套布局。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值