Yii 2:使用post将变量传递给另一个视图的新表单

时间:2015-10-28 07:36:17

标签: php forms yii2

使用yii 2我想将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]);
}

但它会返回此错误:

  

未定义索引:键入/ start / end

有什么想法吗?

------- -------- UPDATE

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

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
    ]);
}

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

  

开始=启动

     

端=端

1 个答案:

答案 0 :(得分:1)

我试过这个怀疑

    <?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
   ]);
}