Yii2注册Js集合类型并删除jquery

Yii2注册Js集合类型并删除jquery,yii,yii2,yii2-basic-app,Yii,Yii2,Yii2 Basic App,我希望每个视图都有这样的脚本标记 <script type="application/ld+json"> /****** my code </script> /******我的代码 与 $this->registerJs(..) 我得到这样的代码: <script>jQuery(function ($) { ..... });</script> jQuery(函数($){ ..... }); 如何添加不同的类型以及如何

我希望每个视图都有这样的脚本标记

<script type="application/ld+json">
/****** my code
</script>

/******我的代码
与 $this->registerJs(..)

我得到这样的代码:

<script>jQuery(function ($) {
.....
});</script>
jQuery(函数($){
.....
});

如何添加不同的类型以及如何删除jQuery..?

默认情况下,
registerJs()
正在使用
$position=View::POS_READY
自动注册jQuery资产。如果您不想这样做,可以使用:

  • registerJs($js,\yii\web\View::POS\u HEAD)
    -将js放置在头部部分
  • registerJs($js\yii\web\View::POS\u BEGIN)
    -将js放置在身体部位的开头
  • registerJs($js,\yii\web\View::POS\u END)
    -将js放置在身体部位的末端
不幸的是,所有这些都会将您的脚本添加到标准的
标记中,而不包含类型


要实现这一点,您必须手动添加它,方法是自己放置
,或者在视图或布局文件中调用
\yii\helpers\Html::script($js,['type'=>'application/ld+json')

默认情况下
registerJs()
正在使用
$position=View::POS\u READY
并且这个正在自动注册jQuery资产。如果您不想这样做,可以使用:

  • registerJs($js,\yii\web\View::POS\u HEAD)
    -将js放置在头部部分
  • registerJs($js\yii\web\View::POS\u BEGIN)
    -将js放置在身体部位的开头
  • registerJs($js,\yii\web\View::POS\u END)
    -将js放置在身体部位的末端
不幸的是,所有这些都会将您的脚本添加到标准的
标记中,而不包含类型


要实现这一点,您必须手动添加它,方法是自己放置
,或者在视图或布局文件中调用
\yii\helpers\Html::script($js,['type'=>'application/ld+json')

我在布局中使用它。通过使用块,我可以在其他页面中替换其他schema.org

<?= Html::script(isset($this->blocks['schema'])
    ? $this->blocks['schema']
    : \yii\helpers\Json::encode([
        '@context' => 'https://schema.org',
        '@type' => 'WebSite',
        'name' => Yii::$app->name,
        'image' => $this->image,
        'url' => $this->url,
        'descriptions' => $this->description,
        'author' => [
            '@type' => 'Organization',
            'name' => Yii::$app->name,
            'url' => Yii::$app->homeUrl,
            'telephone' => Yii::$app->params['phone'],
        ]
    ]), [
    'type' => 'application/ld+json',
]) ?>

  • 只需使用Html::script($js$options)

  • 考虑使用Json::encode()避免在PHP中编写JS 文件这样对我来说更漂亮,而且也让我觉得不一样 插值更容易

  • 在本例中,您会看到许多
    $this->image | description | url
    因为我用它来扩展 yii\web\View具有更多属性,以便使Opengraph自动化 和推特卡片标签生成


我在布局中使用此选项。通过使用块,我可以在其他页面中替换其他schema.org

<?= Html::script(isset($this->blocks['schema'])
    ? $this->blocks['schema']
    : \yii\helpers\Json::encode([
        '@context' => 'https://schema.org',
        '@type' => 'WebSite',
        'name' => Yii::$app->name,
        'image' => $this->image,
        'url' => $this->url,
        'descriptions' => $this->description,
        'author' => [
            '@type' => 'Organization',
            'name' => Yii::$app->name,
            'url' => Yii::$app->homeUrl,
            'telephone' => Yii::$app->params['phone'],
        ]
    ]), [
    'type' => 'application/ld+json',
]) ?>

  • 只需使用Html::script($js$options)

  • 考虑使用Json::encode()避免在PHP中编写JS 文件这样对我来说更漂亮,而且也让我觉得不一样 插值更容易

  • 在本例中,您会看到许多
    $this->image | description | url
    因为我用它来扩展 yii\web\View具有更多属性,以便使Opengraph自动化 和推特卡片标签生成