qq71151461
(Qq71151461)
1
是不是在main.php配置文件里一旦设置了Module的layout属性,就无法使用application下的layout了?
比如我设置了
'layout'=>'main',//-----1处
'modules'=>array(
'blog'=>array(
'layout'=>'main',//------2处
),
),
如果我blogModule下没有main Layout,它就不会去找application下main Layout了。
是不是应该这样子,在blogModule里,
如果没有设置 2处 的layout,则根据 1处 的layout查找blogModule下的layout,若文件不存在,再查找application下的layout。
如果设置了 2处 的layout,则根据 2处 的layout查找blogModule下的layout,若文件不存在,再查找application下的layout。
反正就是优先module下的layout,若不存在,再调用application下的layout
delphiss
(Delphiss)
2
你的1处就是app的layout吧
另外文件存在的话你再设置layout的文件名吧,你给layout里配置一个不存在的文件,Yii用is_file判断文件不存在已经是最后一步了,直接返回false了,不会再有处理了
只要你不把layout显示的设置为false, Yii会逐级往上搜索layout的,直到app对象
qq71151461
(Qq71151461)
3
楼上的意思我明白。
但就如我1楼贴的代码,已经为app和blogModule设置了默认的layout了。现在想要在blogModule里调用app里main1的layout文件,就麻烦了,不是吗?
先要设置当前Controller里的layout为null(此项默认),再设置blogModule里的layout为null,最后再设置Yii::app()->layout=‘main1’,才能搞定。
所以是不是应该有个优先机制,自动查找当前module下的layout,再查找app下的layout。都不存在,再返回false.
pangjanne
(Pngjanne)
4
模块的layout貌似没有优先机制,模块中定义的layout如果不存在,它也并不会去搜索上级的layout;
主题的layout和默认的layout是有优先机制。
naruto
(Simpman)
5
Yii 的layout好乱。
'layout'=>'adminLayout',
'modules'=>array(
'auth'=>array('layout'=>'admin'),
),
在main.php中配置了。
在modules输出
echo $this->layout.’<br/>’;
echo Yii::app()->layout;
this->layout //layouts/column1
app adminLayout
全部都到 protected/view/layouts 里边寻找的。
hawking
(Bruce Hawking)
6
楼主的意思是想要在app和module都使用同一个布局了。
我的想法是让app,和module的controller继承同一个controller,在这个父controller中去设定总体的布局。
(这想法还没来得及试过…不知是否可行…)。
layout 主要是依赖controller而存在的。找准当前的controlle,再通过继承contoller等方式,解决实际应用中的问题
naruto
(Simpman)
7
配置没用的,controller默认去使用 layouts/column1;要在当前controller设置layout=null;在main.php配置的layout才会生效