![](/img/trans.png)
[英]Yii::app()->clientScript->registerCssFile not working YII?
[英]What is the right place for registerCssFile in 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
是正确的还是我必须在每个动作或控制器中包含此css文件?
也许这里有一些风格指南? 任何链接赞赏...
我不能说一个“官方”正确的地方,但我有一个自定义的基本控制器,我的所有控制器都扩展。 我将全局registerCssFile()
调用放在此基本控制器的init()
方法中,因此它们会在整个站点上自动注册。
如果你正在重新使用部分视图文件我可以看到在视图中注册CSS我想但是 ......
在init()
控制器方法中包含整个站点的所有CSS可能最有意义, 然后使用这些扩展组合和压缩它 。
(除非一个视图在网站上的任何其他地方都没有使用过很多自定义CSS,否则可能。)
编辑:如下面briiC.lv所述,使用themes
意味着你需要将所有CSS保存在视图/布局文件中,与Controller代码分开。
首先,如果我是你,我会完全忘记registerCssFile
并且总是只使用registerPackage
。 这样,您可以在一个明确定义的位置更改一个字符串,从而交换整个样式。
两种选择:
您为控制器类创建基类,并将所有register
语句放在beforeRender
中。 这样,对于需要不同样式的网站上的每个部分,您都需要单独的控制器类。
你使用模块。 然后在模块类的init
调用中进行register
调用。
不要把registerCss
调用意见不断 。 这会很快适得其反。 无论您是小网站还是大网站都没关系。
我个人更喜欢始终使用beforeRender
,因为这意味着资产只会为您的“页面”处理,也就是说,路由响应者会向客户端呈现类似HTML的东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.