Yii2 - 应用资产

时间:2014-09-08 06:57:39

标签: php assets yii2

Yii很棒,但资产对我来说总是很奇怪(自1.1版本以来)。 我目前正在使用Yii2和高级应用模板。我想在前端main布局视图中注册一些css / js文件(尝试使用HTML5UP Prologue Template)。 怎么做?我将css个文件放在frontend/web/css目录下,js放在frontend/web/js下,将布局图片放在frontend/web/images目录下。

frontend/assets目录下,我创建了PrologueAssets类,如下所示:

namespace frontend\assets;
use yii\web\AssetBundle;

class PrologueAssets extends AssetBundle {

    public $sourcePath = "@webroot";
    public $css = [
        'css/skel.css',
        'css/style.css',
        'css/style-wide.css',
    ];
    public $js = [
        'js/jquery.min.js',
        'js/jquery.scrolly.min.js',
        'js/jquery.scrollzer.min.js',
        'js/skel.min.js',
        'js/skel-layers.min.js',
        'js/init.js',
    ];

    static function register($view) {
        die(self::sourcePath);
        parent::register($view);
    }

}

不幸的是,这些文件都没有注册。怎么做?

小问题 - 如果仅检测到IE8或IE9,如何注册css文件?

3 个答案:

答案 0 :(得分:5)

你应该试试:

class PrologueAssets extends AssetBundle
{
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [
        ...
    ];
    public $js = [
        ...
    ];
}

http://www.yiiframework.com/doc-2.0/guide-structure-assets.html

PS:资产管理目前正在重构: https://github.com/yiisoft/yii2/pull/4855

答案 1 :(得分:1)

我想添加两个文件,一个在frontend/web/css/custom.cssfrontend/web/js/custom.js下面我刚刚找到frontend / assets / AppAsset.php并直接添加它们,并为我加载的每个页面加载了两个文件。

class AppAsset extends AssetBundle
{
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [
        'css/site.css',
        'css/custom.css',
    ];
    public $js = [
        'js/custom.js',
    ];
    public $depends = [
        'yii\web\YiiAsset',
        'yii\bootstrap\BootstrapAsset',
    ];
}

答案 2 :(得分:0)

这是你为ie 8注册js或css的方式

namespace app\assets;
use yii\web\AssetBundle;
class IE8Assets extends AssetBundle
{
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css=[
            'css/ie8.css'
    ];
    public $cssOptions = ['condition' => 'lte IE9'];
    public $js =[
            'js/jquery-1.11.3.min.js',
            'js/jquery-migrate-1.2.1.min.js',
    ]; 
    public $jsOptions = ['condition' => 'lte IE9'];
}