获取表单来填充的错误POST数据时域有
问题描述:
我已经建立了使用的ActiveForm多种形式与Yii2,它总是与错误的正确$_POST
数据填充字段的初始值,但是我有问题如果他们得到了错误的区域都包含的初始值和不的$_POST
值上提交 - 与最初用数据填充谁想要更新现有的价值形式,如用户这样做。获取表单来填充的错误POST数据时域有
这里是我的表格的一个例子:
$form = ActiveForm::begin();
<?=$form->field($model, 'site_url', ['inputOptions' => ['value' => Yii::$app->params['settings']['site_url']]]); ?>
ActiveForm::end();
我希望的Yii将自动覆盖初始值,因为它是一个POST和使用模型$site_url
属性的值,但不幸的是这不是案件。
有没有一种简单的方法来处理这个问题? ......我想了一个可能的方法是避免通过设置字段的值,而是设置模型的属性值恢复到初始值,然后Yii的应自动和后它会有$_POST
值加载这些值。
...除非有更简单/更好的办法?
答
一个办法是检查它是否有装载值,如果不是我会接盘PARAMS值:在控制器
$form->field($model, 'site_url',
['inputOptions' =>
['value' => (!empty($model->site_url) ?
$model->site_url : Yii::$app->params['settings']['site_url']]]);
答
限定值传递模型之前先查看...例如
// If you using existing model, in this example update action
public function actionUpdate($id)
{
$model = $this->findModel($id);
$model->site_url = 'your value';
if ($model->load(Yii::$app->request->post()) && $model->save()) {
....
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('update', [
'model' => $model
]);
}
}
// If you creating new model and passing values to attributes
public function actionCreate($id)
{
$model = new Model;
$model->site_url = 'your value';
if ($model->load(Yii::$app->request->post()) && $model->save()) {
....
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model
]);
}
}
在这种情况下,当表单被提交时,您将从输入中获得值的变化。
是的,我想到这一点,但它只是似乎过于凌乱我。认为在一种方法中这样做可能在初始加载时更清洁。 – Brett