表格不会在yii中验证和提交

时间:2015-07-09 07:53:37

标签: php jquery forms yii

我尝试通过CJuiDialog中的ajax加载表单。表单已成功加载,但是当我提交表单或写入文本时,表单未验证且未提交。我尝试在renderPartial中设置“true”第四个参数,然后对话框窗口未打开。在控制台中,我收到了错误

  

$(...)。对话框不是函数

在视图中我有这个:

String name = ...;
String code = map.get(name);
if (code != null) {
    // do something...
}

我在控制器中的行为:

Yii::app()->clientScript->registerScript(
       "test",
       "jQuery.ajax({ 
                 type: 'POST',
                 url: '".$this->createUrl("/Site/ShowForm")."',
                 success: function(html){
                            $('#form-test').html(html);
                            });
                             ",
                          CClientScript::POS_READY); ?>
        <div id="form-test"></div>
<?php  $this->endWidget('zii.widgets.jui.CJuiDialog');

和我的表格(register.php)

  public function actionShowForm()
{

            $model = new RegistrationForm;

             if(Yii::app()->request->isAjaxRequest )
              return $this->renderPartial('register', array('model' => $model),false,false);

    }       

          public function actionRegister()
{   
    $model = new RegistrationForm;
            $this->ajaxValidate($model);
            $model->attributes =$_POST['RegistrationForm'];
            if($model->validate())
            {
                $user = new User;
                $user->attributes = $model->attributes;
                if($user->save())
                echo 1;
            }
}

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

在您的控制器中,您检查请求是否为Ajax,您应该在那里进行Ajax验证。

答案 1 :(得分:1)

我找到了解决方案!我添加了

Yii::app()->clientScript->scriptMap = array(
                'jquery.js'     => false,
                'jquery.ui.js'  => false,
                'jquery.yiiactiveform.js' => false,
            );

在我的actionShowForm中。