Yii 注册 CSS 文件,是最后一个(在资产之后)



没有办法在 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>

任何帮助将不胜感激!

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

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

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

$this->registerCssFile("http://example.com/css/themes/black-and-white.css", [
    'depends' => [BootstrapAsset::className()],
    'media' => 'print',
], 'css-print-theme');
//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>

在你的主.php布局中,找到标签,放置以下行代码:

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

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

相关内容

最新更新