richardfan1126/yii2-js-register

将JS注册到视图中的Yii2小部件

v0.0.1 2016-06-29 17:28 UTC

This package is auto-updated.

Last update: 2024-08-25 23:02:41 UTC


README

Latest Stable Version Total Downloads GitHub stars GitHub issues

将JS注册到视图中的Yii2小部件

我为什么需要这个?

如何在Yii2中注册JS脚本到视图中?

在Yii2中,将JS脚本注册到视图的方法是使用 \yii\web\View::registerJS(),

例如,如果您想初始化一个jQuery插件,您将这样做

// in view file

<div class="modal fade" tabindex="-1" role="dialog">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-body">
        <p>Hello World!</p>
      </div>
    </div>
  </div>
</div>

<?php
$this->registerJS('$(".modal").modal({backdrop:"static",keyboard:"false"})');
?>

显然,这是一个非常糟糕的方法,因为

  1. 对人类来说难以阅读
  2. 对您编辑器来说也难以阅读(这意味着JS代码没有语法高亮)
  3. 您必须处理单引号和双引号

这个小部件可以帮助您在Yii中注册JS脚本,就像您直接将脚本块写入HTML一样!

入门

安装

使用Composer安装

composer require richardfan1126/yii2-js-register "*"

php composer.phar require richardfan1126/yii2-js-register "*"

或添加

"richardfan1126/yii2-js-register":"*"

到您的composer.json文件的要求部分。

如何使用

在您的视图文件中,用 <script> 标签包裹您的JS脚本,并用这个小部件包裹所有内容。

示例

// in view file

use richardfan\widget\JSRegister;

<div class="modal fade" tabindex="-1" role="dialog">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-body">
        <p>Hello World!</p>
      </div>
    </div>
  </div>
</div>

<?php JSRegister::begin(); ?>
<script>
    $(".modal").modal({
        backdrop:"static",
        keyboard:"false"
    });
</script>
<?php JSRegister::end(); ?>

重要提示:请记住不要在 <script> 块外添加任何内容。

配置

此小部件有两个配置,即传递给 \yii\web\View::registerJS() 方法的参数。示例

<?php JSRegister::begin([
    'key' => 'bootstrap-modal',
    'position' => \yii\web\View::POS_READY
]); ?>
<script>
    // JS script
</script>
<?php JSRegister::end(); ?>
  • key(可选)识别JS代码块的关键字。如果为null,则使用$js作为关键字。如果使用相同关键字注册了两个JS代码块,则后者将覆盖前者。默认为null
  • position(可选)JS脚本标签应在页面中插入的位置。默认为 \yii\web\View::POS_READY