yii2如何将帖子数据从一个视图转移到两个视图



我正试图在yii2中创建一个两步表单。

这是我的SiteController.php

public function actionCreateCharacter()
{
    $model = new Character();
    var_dump(Yii::$app->request->post('Character'));
    if ($model->load(Yii::$app->request->post())) {
        $attributes=['imie','nazwisko','plec','wyznanie_id'];
        if ($step1 = $model->validate($attributes)) {
            //var_dump($step1);
            // form inputs are valid, do something here
            //var_dump(Yii::$app->request->post('Character');
            return $this->render('createCharacterStep2', [
                'model' => $model,
            ]);;
        }
        else {
            // validation failed: $errors is an array containing error messages
            $errors = $model->errors;
        }
    }
    return $this->render('createCharacter', [
        'model' => $model,
    ]);
}
public function actionCreateCharacterStep2()
{
    $model2 = new Character();
    var_dump($model);
    if ($model2->load(Yii::$app->request->post())) {
        var_dump(Yii::$app->request->post('Character'));
        if ($model2->validate()) {
            // form inputs are valid, do something here
            return;
        }
    }
    /*return $this->render('createCharacter2', [
        'model' => $model,
    ]);*/
}

这是我的Character.php(模型+属性标签和表名)

public function rules()
{
    return [
        [['user_id', 'imie', 'nazwisko', 'plec', 'wyznanie_id', 'avatar_src', 'avatar_svg'], 'required'],
        [['user_id', 'wyznanie_id'], 'integer'],
        [['avatar_svg'], 'string'],
        [['imie'], 'string', 'max' => 15],
        [['nazwisko'], 'string', 'max' => 20],
        [['plec'], 'string', 'max' => 1],
        [['avatar_src'], 'string', 'max' => 30]
    ];
}

我可以通过createCharacter中的Yii::$app->request->post()访问$_POST——我得到imienazwiskoplecwyznanie_id

但是当我在步骤2中发送表单时,我只有来自步骤2的发布数据。

如何从步骤1+步骤2设置帖子数据?

对不起我的英语,提前谢谢。

在从步骤1操作渲染步骤2时,您总是可以将额外的数据传递给控制器的操作。所以我添加了"STEPONEPOSTS"post变量,它包含步骤1的所有post。请检查以下内容。

public function actionCreateCharacter()
{
    $model = new Character();
    var_dump(Yii::$app->request->post('Character'));
    if ($model->load(Yii::$app->request->post())) {
        $attributes=['imie','nazwisko','plec','wyznanie_id'];
        if ($step1 = $model->validate($attributes)) {
            //var_dump($step1);
            // form inputs are valid, do something here
            //var_dump(Yii::$app->request->post('Character');
            return $this->render('createCharacterStep2', [
                'model' => $model,
                'STEPONEPOSTS' => Yii::$app->request->post(),
            ]);;
        }
        else {
            // validation failed: $errors is an array containing error messages
            $errors = $model->errors;
        }
    }
    return $this->render('createCharacter', [
        'model' => $model,
    ]);
}

现在在第2步视图中,您可以将第1步的posts变量作为

$STEPONEPOSTS

如果必须为step 1step 2建立表,还有另一种方法。则先保存步骤1的数据,然后保存步骤2的数据
如果不使用两个表,则可以为每个步骤创建两个表单,每个表单还可以根据字段为每个步骤生成scenarios
我认为这可能会有所帮助。You can use session also as per discussion in comments or you can use the extension array wizard
但阵列向导扩展没有很好的文档记录,所以我建议您尝试我的方法,我会帮助您。

最新更新