获取表单来填充的错误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']]]); 
+0

是的,我想到这一点,但它只是似乎过于凌乱我。认为在一种方法中这样做可能在初始加载时更清洁。 – Brett

限定值传递模型之前先查看...例如

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

在这种情况下,当表单被提交时,您将从输入中获得值的变化。