Yii2 jsPosition POS_HEAD无法使用Twig

时间:2015-03-24 08:30:05

标签: twig yii2 assetbundle

我使用Yii2高级与Twig集成。我需要包含js和css文件来阻止块并使用AssetBundle。

如果我使用POS_BEGIN或POS_END工作。 Js和css加载到当前位置的页面。但是如果我将位置设置为POS_HEAD渲染,则忽略此状态并且不加载文件到页面。

请帮忙。我做错了什么?

我的AssetBundle

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() }}

1 个答案:

答案 0 :(得分:0)

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

  

资产依赖性主要通过   yii \ web \ AssetBundle :: $依赖属性。在AppAsset示例中,   资产包依赖于另外两个资产包:yii \ web \ YiiAsset和   yii \ bootstrap \ BootstrapAsset,表示CSS和JavaScript文件   在AppAsset中将包含在两个依赖项中的那些文件之后   束。

两种资产 ' YII \网络\ YiiAsset&#39 ;, ' YII \引导\ BootstrapAsset&#39 ;, 包含在渲染页面的末尾,您的资产不能放在它们之前,因为它们都依赖于它们。

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

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