zhouyang
(Zhouyang0304)
1
配置了三个module(module1,module2,module3)后,这个三个module下分别有三个layout.
同时在protected目录下,有一个layout文件夹,
我的想法是,举个例子来说,
当程序运行到module1后,要渲染layout时,先到module1.views.layout下寻找指定layout,
如果没有找到,就继续到protected.views.layouts下去寻找layout.
这样子,module1和module2和module3公用的layout就可以放到protected.views.layouts路径下,只需要维护一个layout,不用维护多个layout!
不知道框架是否存在这个问题,还是这问题已经解决了,更新的版本低了(注:前天才更新的svn)
qiang
(Qiang Xue)
2
现在的做法是这样的:
-
如果CWebModule.layout没设置,那么该module下的所有view都将采用application的layout。
-
如果CWebModule.layout,或CController.layout设置了,那么layout将在module1.views.layout下搜索。
这和你想要的有所差别。你可以通过改写CController::getLayoutFile()来实现你想要的方式。
zhouyang
(Zhouyang0304)
3
我在控制器配置layout使用下面的方式解决问题
$this->layout = 'main'
修改为
$this->layout = 'application.views.layouts.main';
解决了此问题
zhouyang
(Zhouyang0304)
4
但是相同的设置在module中配置的layout就不起作用!
sharehua
(8080268)
6
每个控制器都要设置layout路径?有没有什么地方统一设置?
sharehua
(8080268)
7
我在controller里面设置了$this->layout = 'application.modules.mgt.views.layouts.main';
则可以指向module的layout。我这样做科学吗?
qiang
(Qiang Xue)
8
你只需用'main'就可以指向module的layout了。如果不设置(缺省null),那么是指向application的缺省layout.
will
(Phpwindcn)
9
Quote
你只需用'main'就可以指向module的layout了。如果不设置(缺省null),那么是指向application的缺省layout.
我也在看Module, layout, theme,
我试了使用, themes/classic/views/modulename/controllername/action.php
不成功,
如果要给module使用theme的话应该如何处理的呢?
qiang
(Qiang Xue)
10
我刚测试过没问题的。
你设置theme了没有?你的action view的路径是对的。
will
(Phpwindcn)
11
Quote
我刚测试过没问题的。
你设置theme了没有?你的action view的路径是对的。
那我再看看配置文件和路径。
BTW, 老大, 你的回答太迅速了!I 服 U 
晕,是我文件名打错了一个字母,修改后工作正常。
同时,我推荐大家使用theme,可以很好的支持module和layout,并且可以让所有的view files在同一目录下,非常方便以后更新和开发新主题。