Yii2 - 应用程序资源

3
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文件?

当您将CSS和JS文件包含在AppAsset.php中(而不是PrologueAssets.php)时会发生什么? - Prabowo Murti
@PrabowoMurti - 这很有趣。它试图包含文件,但与基本URL而不是当前URL无关,因此仅在主页上工作。非常奇怪,尤其是当默认的Yii site.css同时正确加载时。 - Joe
我做了一个解决方法 - 使用 Url::base() 生成基本 URL,并通过在结尾添加 css/...js/... 的方式将文件包含在视图中。我一直认为 Yii 中的资源太过复杂。 - Joe
3个回答

5

1

我想添加两个文件,一个在frontend/web/css/custom.css下,另一个在frontend/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',
    ];
}

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'];
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接