在Yii中registerCssFile的正确位置是什么?

lla*_*err 4 css php yii

我是Yii的新手.

将registerCssFile调用放在控制器的动作中是否正确?

我认为,正确的观点是内部观点

例如,我创建了一些用户菜单,并将其包含在我的一些视图中.我为用户菜单分配了css文件,我不想user_menu.css在每个操作或控制器中包含这个视图使用此用户菜单.所以我在parts/user_menu.php视图中使用此代码:

<?php
    Yii::app()->getClientScript()->registerCssFile(yii::app()->request->baseUrl.'/css/user_menu.css', 'screen');
?>
<ul class="user-menu">
...here comes menu
Run Code Online (Sandbox Code Playgroud)

是正确的还是我必须在每个动作或控制器中包含此css文件?

也许这里有一些风格指南?任何链接赞赏...

tha*_*smt 6

我不能说一个"官方"正确的地方,但我有一个自定义的基本控制器,我的所有控制器都扩展.我将全局registerCssFile()调用放在init()此基本控制器的方法中,因此它们会自动在整个站点上注册.

如果你正在重新使用部分视图文件我可以看到视图中注册CSS 我想但是 ......

init()控制器方法中只包含整个站点的所有CSS可能最有意义,然后使用这些扩展组合并压缩它.

(除非一个视图在网站上的任何其他地方都没有使用过很多自定义CSS,否则可能.)

编辑:正如briiC.lv下文提到的,使用themes的手段,你会希望将所有的CSS在您的视图/布局文件,在控制器代码分开.

  • 我也使用init(或主控制器中的beforeAction),但我发现当你计划为你的网站添加主题时这种方法不灵活.如果我必须在yii应用程序中包含主题,我将registerCss和registerScript直接放入布局文件中,因此主题之间的切换不包含不必要的代码,我不需要在init中考虑并添加许多IF语句"if(theme == 'default'){/*注册default.css*/}否则if(theme =='pink'){/*register pink.css并注册pink.js*/}". (2认同)