Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Yii中提交表单之前,在modal中输入用户信息_Php_Forms_Yii_Modal Dialog - Fatal编程技术网

Php 在Yii中提交表单之前,在modal中输入用户信息

Php 在Yii中提交表单之前,在modal中输入用户信息,php,forms,yii,modal-dialog,Php,Forms,Yii,Modal Dialog,我有一个表单,在用户提交表单并验证通过后,我想在模式窗口中询问他的电子邮件和昵称。若用户填写并提交电子邮件和昵称,我想验证它并将其保存为新记录,或者获取现有记录的id,以防过去已经使用过电子邮件。如果验证不成功,用户应该能够在相同模式下更正值。如果一切正常,我想保存表单,包括创建用户id 我已经完成了表单保存和用户创建/查找过程。我只是不知道,如何把这些放在一起,在我上面描述的场景中工作。谁能解释一下,在Yii中应该如何做?我正在使用Yii 1.1.15和Yii助推器。谢谢。在Yii中,默认情况

我有一个表单,在用户提交表单并验证通过后,我想在模式窗口中询问他的电子邮件和昵称。若用户填写并提交电子邮件和昵称,我想验证它并将其保存为新记录,或者获取现有记录的id,以防过去已经使用过电子邮件。如果验证不成功,用户应该能够在相同模式下更正值。如果一切正常,我想保存表单,包括创建用户id

我已经完成了表单保存和用户创建/查找过程。我只是不知道,如何把这些放在一起,在我上面描述的场景中工作。谁能解释一下,在Yii中应该如何做?我正在使用Yii 1.1.15和Yii助推器。谢谢。

在Yii中,默认情况下,update.php和create.php视图中都使用了_form.php视图文件

所以,你可能需要做smth。类似:在update.php和create.php视图中插入带有模态的表单。 这些操作是不同的,所以逻辑是分开的;这是MVC的基本优势

public function actionCreate() {
    $model = new Users;
    if (isset($_POST['Users'])) {
        $model->attributes = $_POST['Users'];
        if ($model->save()) { // here in the save() method the valadation is included
                              // ONLY after we validate and successfully saved we go to update action
                $this->redirect(array('update', 'id' => $model->id));
        }
    }
    $this->render('create', array(
        'model' => $model,
    ));
}
主要的是,当您尝试保存方法时,验证会自动进行。 因此,如果验证未成功,逻辑将返回到相同的操作,例如,创建视图中填充的字段,因为模型已经有数据传入:$model->attributes=$\u POST['Users']

如果验证成功,我们将进一步重定向。不需要ajax表单提交,即使是随意提交也适合这里

public function actionUpdate($id) {
    $model = $this->loadModel($id);
    if (isset($_POST['Users'])) {
        $model->attributes = $_POST['Users'];
        if ($model->save()) { // after saving EXISTING record we redirect to 'admin' action
                $this->redirect(array('admin'));
        }
    }
    $this->render('update', array(
        'model' => $model,
    ));
} 
viewsupdate/create中的表单按原始设计保留

唯一性验证在模型规则中很简单:

array('username, email', 'unique'),
电子邮件语法的电子邮件值如下所示:

array('email', 'email'),

所以解决方案应该是:-使用Ajax提交创建表单-如果验证正常,则填充模式-用户输入电子邮件和昵称下一步要做什么?如何验证电子邮件和昵称,然后一起提交所有数据?