Yii CForm,嵌套表单Ajax验证

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Yii CForm,嵌套表单Ajax验证脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我创建了以下嵌套表单数组;

return array(

    'elements' => array(
        'contact' => array(
            'type' => 'form','elements' => array(
                'first_name' => array(
                    'type' => 'text',),'last_name' => array(
                    'type' => 'text',)
            ),'lead' => array(
            'type' => 'form','elements' => array(
                'primary_skills' => array(
                    'type' => 'textarea','buttons' => array(
        'save-lead' => array(
            'type' => 'submit','label' => 'Create','class' => 'btn'
        ),)
);

我有这样的查看页面

echo $form->renderBegin();
echo $form['lead'];
echo $form['contact'];
echo $form->buttons['save-lead']; 
echo $form->renderEnd();

我的actionCreate是这样的

$form = new CForm('application.views.leads.register');
$form['lead']->model = new Lead;
$form['contact']->model = new Contact;

// how can i perform ajax validation only for $form['contact']
$this->performAjaxValidation($model); 

//if contact form save btn is clicked
if ($form->submitted('save-lead') && $form['contact']->validate() &&

    $form['lead']->validate()
) {

    $contact = $form['contact']->model;
    $lead = $form['lead']->model;
    if ($contact->save()) {
        $lead->contact_id = $contact->id;
        if ($lead->save()) {
            $this->redirect(array('leads/view','id' => $lead->id));
        }
    }
}

ajax验证方法

protected function performAjaxValidation($model)
{
    if (isset($_POST['ajax']) && $_POST['ajax'] === 'contact') {
        echo CActiveForm::validate($model);
        Yii::app()->end();
    }
}

所以我的问题是如何在$form [‘contact’]和$form [‘lead’]元素上单独执行ajax验证?

解决方法

您可以在页面中包含多个表单,但不应嵌套它们. 嵌套表单无效.

脚本宝典总结

以上是脚本宝典为你收集整理的Yii CForm,嵌套表单Ajax验证全部内容,希望文章能够帮你解决Yii CForm,嵌套表单Ajax验证所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: