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