8

Yii 中是否有办法注册 js 或 css 文件以在资产管理器加载它们之后加载它们。

我使用一个 css 文件来覆盖来自一些 Yii 扩展的样式,但是 Yii 将我的文件包含在扩展生成的资产之前。

我知道我可以更改扩展名以从资产管理器中删除 css 文件并手动添加它们,registerCssFile但这不是我想要这样做的方式。

这是我所拥有的:

<head>
...
    <link rel="stylesheet" type="text/css" href="/css/MY_CSS.css" />
...
    <link rel="stylesheet" type="text/css" href="/assets/8e838803/css/EXTENSION_CSS.css" />
...
</head>

这就是我想要的:

<head>
...
    <link rel="stylesheet" type="text/css" href="/assets/8e838803/css/EXTENSION_CSS.css" />
...
    <link rel="stylesheet" type="text/css" href="/css/MY_CSS.css" /> <!-- the last one -->
</head>

任何帮助,将不胜感激!

4

4 回答 4

11

CClientScript 注册的资产总是添加标题之前

在您的情况下,您应该在标题添加 CSS ,以保证您想要的顺序

于 2012-12-10T20:53:36.577 回答
2

在 Yii2 中,实现此目的的一个好方法是使用 registerCssFile 上的 'depends' 选项,如文档所示

$this->registerCssFile("http://example.com/css/themes/black-and-white.css", [
    'depends' => [BootstrapAsset::className()],
    'media' => 'print',
], 'css-print-theme');
于 2015-08-11T11:02:28.623 回答
1
//example 1
class someWidget extends YourExtendsionClassName
{
    public function init()
    {
        parent::init();
        Yii::app()->getClientScript()->registerCssFile('/path/to/your/css/file.css');
    }

    // or

    public function run()
    {
        Yii::app()->getClientScript()->registerCssFile('/path/to/your/css/file.css');
            parent::run();
    }
}

//example 2

//Layouts file main.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    
<title>Title</title>
<?php Yii::app()->getClientScript()->registerCssFile('/path/to/your/css/file.css'); ?>
</head>
于 2012-12-11T04:59:54.263 回答
0

在你的 main.php 布局中,找到标签,把这行代码:

Yii::app()->clientScript->registerCssFile(Yii::app()->baseUrl.'/path/to/css/file');

http://www.codexamples.com/98/how-to-include-javascript-css-in-yii/

于 2013-10-31T15:11:50.673 回答