繁体   English   中英

Yii2:如何手动调用yiiActiveForm()?

[英]Yii2: how to call yiiActiveForm() manually?

yii2我使用yii2-assets-auto-compress插件(包括jQuery lib)将所有js代码放入1个文件中。 async加载此文件可加快页面加载速度。 但是,如果页面上有表单,则yiiActiveForm()</body>的末尾添加yiiActiveForm() 因此,错误是jQuery is not defined

如何解决这个问题? 首先,我可以从script.js手动调用yiiActiveForm() ,但是如何关闭它自动在正文末尾加载呢? 通常,这并不方便,因为可能还有其他脚本会附加js代码。 也许有人知道如何使用yii2-assets-auto-compress插件附加js代码?

<script src="/assets/js-compress/script.js?" async="async"></script>
<script type="text/javascript">
jQuery(document).ready(function () {
    jQuery('#w0').yiiActiveForm([],[]);
});
</script>
</body>

async在HTML解析期间下载文件,并在完成下载后暂停HTML解析器以执行该文件。

  • 您应该在头部的压缩脚本之外加载Jquery
  • 或将脚本加载到文档的<head>中意味着使用脚本标记将其放置在布局文件中

    <script type="text/javascript" src="/path/to/compressed.js" async="async"></script>

    或使用

    <?php $this->registerJsFile('/path/to/compressed.js',['aync'=>'aync'])?>

  • 如果您正在使用AssetManager加载脚本文件

然后像这样加载

public $js = [
        ['js/compressed.js','async'=>'async','position' => yii\web\View::POS_HEAD],

    ];

另外,您应该配置资产管理器以不加载核心脚本jquery,以使其不会两次加载jquery。

'assetManager' => [
    'bundles' => [
          'yii\web\JqueryAsset' => [
              'sourcePath' => null, 
              'js'=>[]
           ],
     ],
 ],

HERE是一本好书。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM