0

我正在使用带有 Twig 集成的 Yii2。我需要包含 js 和 css 文件来阻止并为此使用 AssetBundle。

如果我使用 POS_BEGIN 或 POS_END 它就可以了。Js 和 css 加载到当前位置的页面。但是如果我将位置设置为 POS_HEAD 渲染忽略这个并且没有加载文件到页面。

请帮忙。我究竟做错了什么?

我的资产包

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

class YandexAsset extends AssetBundle
{
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [
        '/css/map.css'
    ];
    public $js = [
        'js/map.js',
        'js/test.js'
    ];
    public $depends = [
        'yii\web\YiiAsset',
        'yii\bootstrap\BootstrapAsset',
    ];
    public $jsOptions = [ 'position' => \yii\web\View::POS_HEAD ];
}

并在 Twig 模板中连接

{{ use('frontend/assets/YandexAsset')}}
{{ register_yandex_asset() }}
4

1 回答 1

0

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

资产依赖主要通过 yii\web\AssetBundle::$depends 属性指定。在 AppAsset 示例中,资产包依赖于另外两个资产包:yii\web\YiiAsset 和 yii\bootstrap\BootstrapAsset,这意味着 AppAsset 中的 CSS 和 JavaScript 文件将包含在两个依赖包中的这些文件之后。

'yii\web\YiiAsset'、'yii\bootstrap\BootstrapAsset' 这两个资产都包含在渲染页面的末尾,并且您的资产不能放在它们之前,因为它们依赖于它们。

如果您想在 POS_HEAD 中包含 js 文件,您可以registerJsFile()在视图或布局文件中使用

http://www.yiiframework.com/doc-2.0/yii-web-view.html#registerJsFile()-detail

于 2015-03-24T12:18:09.810 回答