yii2 form组件是强制吗
1个回答
2017-03-06 · 知道合伙人互联网行家
关注
展开全部
该问题的实质其实与modal的关系倒不大,其问题的核心在于ActiveForm的异步验证上,解决了首要矛盾,我们本篇文章的问题也就迎刃而解了。顺便再叨唠一句,modal确实没啥好说了。后面若是有我再把话改回来。
yii2中,ActiveForm默认做了客户端验证,但是表单的提交,却不是无刷新的。也就是常常看到的表单提交后页面会刷新。如果想要开启无刷新的模式,只需要在ActiveForm开始开启enableAjaxValidation即可,像下面这样
<?php $form = ActiveForm::begin([
'id' => 'form-id',
'enableAjaxValidation' => true,
'validationUrl' => Url::toRoute(['validate-form']),
]
); ?>
注意哦,id和enableAjaxValidation一个都不能少。
关于validateUrl我们做一个说明。如果你不设置该参数,该地址默认是你当前路由,而又恰巧你当前路由就是表单form的action,你会很好奇的发现,当表单项input失去焦点的时候,你对数据的修改已经提交到后端进行了处理了?这往往不是我们想要的,此时就需要给validateUrl设置一个路由地址,其所要请求的操作的意义就在于异步做验证!我们看具体实现:
yii2中,ActiveForm默认做了客户端验证,但是表单的提交,却不是无刷新的。也就是常常看到的表单提交后页面会刷新。如果想要开启无刷新的模式,只需要在ActiveForm开始开启enableAjaxValidation即可,像下面这样
<?php $form = ActiveForm::begin([
'id' => 'form-id',
'enableAjaxValidation' => true,
'validationUrl' => Url::toRoute(['validate-form']),
]
); ?>
注意哦,id和enableAjaxValidation一个都不能少。
关于validateUrl我们做一个说明。如果你不设置该参数,该地址默认是你当前路由,而又恰巧你当前路由就是表单form的action,你会很好奇的发现,当表单项input失去焦点的时候,你对数据的修改已经提交到后端进行了处理了?这往往不是我们想要的,此时就需要给validateUrl设置一个路由地址,其所要请求的操作的意义就在于异步做验证!我们看具体实现:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询