美文网首页
yii框架之layout布局文件

yii框架之layout布局文件

作者: 鐘濤 | 来源:发表于2017-07-25 20:20 被阅读0次
    配置布局变量 $layout
    1. 在Controller控制器里定义布局变量
      直接添加一个公有变量:public $layout = '布局文件路径'(默认起始路径是控制器所在目录下的views目录下的layouts文件夹)
      举个栗子:public $layout = loginlayout
      举个栗子
      在LoginController控制器里头写了一个公共的布局变量,它的值为loginlayout
      那么它指向的路径就是:views/layouts/loginlayout.php
    2. 如果是想在action里改变布局,那么就把变量写在里面
    public function actionIndex(){
        $this->layout = 'loginlayout';
    }
    
    1. 通过控制器的init()方法去定义该变量
    public function init(){
        $this->layout = 'loginlayout';
        parent::init(); // TODO: Change the autogenerated stub
    }
    
    1. 同样也可以通过模块(Module)的init方法去定义$layout布局文件
      不过这几种方法是有区别的。因为层次关系会由内到外去找布局文件,所以优先级是:2 > 3 > 1 > 4
    layout变量的值
    • $layout = false;
      这种代表的是不使用布局文件
    • $layout = null;
      这种代表的是使用模块里定义的布局文件
    • $layout = 'string';
      该字符串代表的是一个布局文件路径
      可以使用别名开头@app/Module/admin/views/layouts/loginlayout
      使用/开头则是指定app下面的views里面的layouts文件夹下的布局文件
      直接使用布局文件的名字如:$layout = loginlayout,则表示使用Module下的布局文件

    此三种路径写法的源码如下:

    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;  
    }  
    
    查找布局文件的原理
    • 先看当前controller里面有没有定义布局文件
    • 如果没有,查找所在Module里面有没有定义布局文件
    • 查找父级Module里面有没有定义布局文件
    布局文件的嵌套使用
    <?php $this->beginContent('@app/views/layouts/main.php');?>//必须加.php  
    <?php echo $content;?>  
    <?php $this->endContent();?>  
    

    原文地址:http://blog.csdn.net/lx_96/article/details/52122168

    相关文章

      网友评论

          本文标题:yii框架之layout布局文件

          本文链接:https://www.haomeiwen.com/subject/kllgkxtx.html