在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()未定义
答案 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
属性,允许通过配置数组进行设置。