Yii2:如何禁用yiiActiveForm()函数追加?

时间:2018-03-26 20:53:29

标签: javascript yii yii2

在yii2中,我有简单的ActiveForm

<?php $form = ActiveForm::begin(['enableClientValidation' => false]) ?>
<?= $form->field($model, ...

这会在</body>标记javascript代码之前添加:

<script type="text/javascript">jQuery(document).ready(function () {
jQuery('#w0').yiiActiveForm([], []);
});</script>

我想禁用此代码并在我的自定义js文件中手动添加它。那么,如何禁用?主要目标是将所有内容(包括jQuery)放在一个大js文件中,并在每个具有async属性的页面上运行它以加快性能。

P.S。我必须删除Yii生成的这个js代码,因为如果我使用jQuery也位于的async,则会出现错误:jQuery()未定义

1 个答案:

答案 0 :(得分:1)

如果您将代码更改为

<?php $form = ActiveForm::begin(['enableClientScript' => false]) ?>

表单不会输出任何JavaScript,请查看documentation for ActiveForm,其中包含:

  

$ enableClientScript 公共财产

     

是否挂钩yii.activeForm JavaScript插件。如果要支持客户端验证和/或AJAX验证,或者想要利用true,则必须将此属性设置为yii.activeForm plugin。如果是false,表单将不会生成任何JavaScript。

我看到的问题是你需要手动添加通常由小部件生成的所有代码,验证,错误消息,所有这些代码。

我从未尝试过这个,除了简单地尝试它,看它停止生成标记。

更好的选择可能是创建自己的组件MyActiveForm并覆盖registerClientScript()以添加async属性。也许您甚至可以提供enableAsyncClientScriptLoading属性,允许通过配置数组进行设置。