繁体   English   中英

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

[英]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 这样,您可以在一个明确定义的位置更改一个字符串,从而交换整个样式。

两种选择:

  1. 您为控制器类创建基类,并将所有register语句放在beforeRender中。 这样,对于需要不同样式的网站上的每个部分,您都需要单独的控制器类。

  2. 你使用模块。 然后在模块类的init调用中进行register调用。

不要把registerCss调用意见不断 这会很快适得其反。 无论您是小网站还是大网站都没关系。

我个人更喜欢始终使用beforeRender ,因为这意味着资产只会为您的“页面”处理,也就是说,路由响应者会向客户端呈现类似HTML的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM