Yii 2:通过post将变量传递到另一个视图的新形式


Yii 2: new form to pass variables to another view with post

使用yii2,我想将3个变量从一个视图传递到另一个视图。在我的控制器中,我创建了一个获取这3个变量的操作,然后打开一个视图,但在";"开始";查看我不能写工作表:/

这是我的出发点:

<?= Html::beginForm(['preview', 'type'=>0, 'start'=>'start', 'end'=>'end'], 'post', ['enctype' => 'multipart/form-data']) ?>
                <?=
                    'yii'widgets'MaskedInput::widget([
                        'name' => 'start',
                        'clientOptions' => ['placeholder' =>  'GG-MM-AAAA'],
                        'mask' => '99-99-9999',
                    ])
                ?>
                <?=
                'yii'widgets'MaskedInput::widget([
                    'name' => 'end',
                    'clientOptions' => ['placeholder' =>  'GG-MM-AAAA'],
                    'mask' => '99-99-9999',
                ])
                ?>
                <?= Html::submitButton('Go', ['class' => 'submit']) ?>
<?= Html::endForm() ?>

这是我的行动:

public function actionPreview($type, $start, $end)
{
    return $this->redirect(['preview', 'type' => $type, 'start'=>$start, 'end'=>$end]);
}

但是,当我按下按钮";Go";,Yii 2返回

错误请求(#400)-缺少所需参数:开始、结束

我也尝试过这个动作:

public function actionPreview() //$type, $start, $end
{
    $post = Yii::$app->request->post();
    $type = $post['type'];
    $start = $post['start'];
    $end = $post['end'];
    return $this->redirect(['preview', 'type' => $type, 'start'=>$start, 'end'=>$end]);
}

但它返回这个错误:

未定义的索引:类型/开始/结束

有什么想法吗?

--------更新--------

现在渲染工作,但我无法从起始视图读取params。

MyController:

public function actionPreview() //$type, $start, $end
{
    $type = Yii::$app->request->get('type');
    $start = Yii::$app->request->get('start');
    $end = Yii::$app->request->get('end');
    return $this->render('preview', [
        'type' => $type, 'start'=>$start, 'end'=>$end
    ]);
}

我的视图中的表单与您在上面看到的相同,但它将通用参数发送到下一页(简而言之,它不读取输入字段):

start=启动

end=结束

我已经尝试过这个wy

    <?php 
    $start = '1234560123';
    ?>
    <?=   Html::beginForm(['preview', ], 'post', ['enctype' => 'multipart/form-data']) ?>

                     <?=   'yii'widgets'MaskedInput::widget([
                            'name' => 'start',
                            'value' => $start,
                            'clientOptions' => ['placeholder' =>  'GG-MM-AAAA'],
                            'mask' => '99-99-9999',
                        ])
                    ?>
                    <?= Html::submitButton('Go', ['class' => 'submit']) ?>
    <?= Html::endForm() ?>

并工作

如果您有错误未定义的变量,那么在控制器中传递变量就有问题。

为了获得正确的视图,变量中的数据必须与掩码匹配。。。

对于预览,你应该使用post,而不是得到

public function actionPreview() //$type, $start, $end
{
    $type = Yii::$app->request->post('type');
    $start = Yii::$app->request->post('start');
    $end = Yii::$app->request->post('end');
    return $this->render('preview', [
       'type' => $type, 'start'=>$start, 'end'=>$end
   ]);
}