Yii 2—— layout查找顺序

1.1  layout查找顺序

在应用中添加了一个模块,但是还没有给模块添加layouts,结果发现页面还是可以正常显示,只是layout用的是应用级的layout,有点好奇,于是跟了下代码,在yii2\base\Controller.php的findLayoutFile()看到有如下代码:


public function findLayoutFile($view)
 {
     $module = $this->module;
     if (is_string($this->layout)) {
         $layout = $this->layout;
     } elseif ($this->layout === null) {
         while ($module !== null &&  $module->layout === null) {
             $module =  $module->module;
         }
         if ($module !== null && is_string($module->layout)) {
             $layout = $module->layout;
         }
     }

红色部分代码含义就是当在当前模块没有找到layout时,就上溯到父模块,寻找父模块的layout,以此类推,直到最后找到可用的layout。

时间: 2024-10-06 07:49:52

Yii 2—— layout查找顺序的相关文章

Windows下DLL查找顺序

Windows下DLL查找顺序 作者:Tocy    时间:2014-10-18 一.写作初衷 在Windows下单个DLL可能存在多个不同的版本,若不特别指定DLL的绝对路径或使用其他手段指定,在应用程序加载DLL时可能会查找到错误的版本,进而引出各种莫名其妙的问题.本文主要考虑以下两个方面: a. 参考MSDN,给出Windows下DLL查找顺序 b. 简单使用ProcessMonitor来验证DLL查找顺序 二.DLL查找顺序 (本部分多数内容是参考MSDN上的Dynamic-Link L

python 函数变量查找顺序

python 函数变量的查找顺序:优先级为: 局部---> 全局---> 如果仍没找到,将引发NameError错误. #!/usr/bin/env python #coding:utf-8 #@Author:Andy # Date: 2017/6/14 money = 1000 def tell_info(name): print("%s have %d " % (name, money)) def fun(): money = 10 tell_info('egon')

使用yii的layout,加入<?php echo $content; ?>这句话时,它会自动在子页面上面添加一个div包裹

使用yii的layout,加入<?php echo $content; ?>这句话时,它会自动在子页面上面添加一个div包裹,而且div的id命名为id=content,这个和已有id重复,如何解决? http://hi.baidu.com/jyhscy/item/2b05034c9d9f1e35fb8960d1 yii中layout的column和main文件之间的关系 在yii创建应用成果之后,在view/layouts/目录下,会产生3个布局页面: -->main.php --&g

变量在原型链中的查找顺序

js原型链 下面是一道js题目: [javascript] view plain copy function C1(name){ if(name){ this.name = name; } } function C2(name){ this.name = name; } function C3(name){ this.name = name || "John"; } C1.prototype.name = "Tom"; C2.prototype.name = &qu

模块导入、循环导入、模块查找顺序、相对导入及绝对导入

模块导入 什么是模块 模块:就是一系列功能的结合体 模块的三种来源: 1.内置的(python解释器自带) 2.第三方的(别人写的) 3.自定义的(自己写的) 模块的四种表现形式 1.使用python编写的py文件(也就意味着py文件也可以称之为模块:一个py文件也可以称之为一个模块) 2.已被编译为共享库或DLL的C或C++扩展(了解) 3.把一系列模块组织到一起的文件夹(文件夹下有一个__init__.py文件,该文件夹称之为包) 包:一系列py文件的结合体 4.使用C编写并连接到pytho

1.模块2.循环导入问题及解决思路3.区分py文件的两种类型4.模块的查找顺序5.模块的绝对导入与相对导入6.项目开发的目录规范

一.模块 什么是模块? 模块就是一系列功能的结合体 模块的三种来源: 1.内置的(python解释器自带的) 2.第三方的(别人写的) 3.自定义的(你自己写的) 模块的四种表现形式: 1.使用python编写的py文件(也就是意味着py文件也是可以称之为模块 2.已被编译为共享库或DLL的或C++扩展(了解) 3.把一系列模块组织到一起的文件夹(文件夹下有一个__init__.py文件,该文件夹称之为包) 4.使用C编写并连接到Python解释器的内置模块 模块选择 1.用别人写好的模块(内置

oop 中的属性查找顺序,派生 覆盖

属性的查找顺序 先找自己的,自己没有找他爸的 这个(他爸 就是父类,自己 就是子类) 派生就是子类的代码 和父类的 代码 不一样时 这就叫做派生子类继承了 父类的 代码 还添加了 自己的新代码 即通常就是派生类而 派生就指的时子类 覆盖 就是 子类中的属性或者方法 和父类 出现的一样 这就叫覆盖 class A: text = "haha" class B(A): text = "heihei" pass b = B()print(b.text)这样你调用 只能调用

继承1.继承,2.属性查找顺序3.子类访问父类内容4.补充,经典类与新式类 --------- # 21

继承: 1.继承 1.1继承 1 '''''' 2 """ 3 1.什么是继承? 4 继承是描述两个对象之间,什么是什么的关系 5 6 案例:麦兜,佩奇,猪刚鬓 -- 都是猪 7 8 在程序中,继承描述的是类和类之间的关系 9 10 例如:a 继承 b,a就能直接使用b已经存在的方法或属性 11 此时,a称之为子类,b被称之为父类,也称为基类 12 13 2.为什么要使用继承? 14 继承的一方制剂使用另一方已经有的东西 15 其目的是:提高重用性(重用已有的代码) 16 1

第十一章、对象属性查找顺序与属性和方法

目录 第十一章.对象属性查找顺序与属性和方法 一.属性查找 二.对象赋属性 三.绑定方法 第十一章.对象属性查找顺序与属性和方法 一.属性查找 对象自身-->子类-->父类(多继承)-->报错 二.对象赋属性 方式一:给自己对象加一个属性 student=Student() student.name='nick' 方拾二:__init__()方法内赋值 方式三:对象.方法 change_name(self,name) self.name='nick' 三.绑定方法 定义在类内部的方法 类