2017-04-05 7 views
0

ActiveForm을 Yii2와 함께 사용하여 많은 폼을 설정했으며 항상 문제가있는 $_POST 데이터를 필드에 채 웁니다. 기존 값을 업데이트하려는 사용자와 같이 초기에 데이터로 채워진 양식으로이 작업을 수행하는 경우 오류가 발생하면 필드에 항상 초기 값이 포함되고 이 아닌$_POST 값입니다. 여기 필드가 초기 값을 가질 때 Yii2의 ActiveForm으로 폼을 가져 오면 에러시 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 값을 갖습니다.

... 더 쉽고/좋은 방법이 없다면? 예를 들어 ... 당신이 볼 수있는 모델을 통과하기 전에 컨트롤러

$form->field($model, 'site_url', 
    ['inputOptions' => 
     ['value' => (!empty($model->site_url) ? 
     $model->site_url : Yii::$app->params['settings']['site_url']]]); 

답변

0

하나의 옵션은 확인 될 것이고, 그렇지 않으면 나는 그 PARAMS의 값을 설정합니다

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

이 경우 양식을 제출하면 변경 한 입력 값이 표시됩니다.

+0

그래, 나는 그것을 생각했지만 지나치게 지저분 해 보였다. 메소드에서이 모든 것을 수행하는 것이 초기로드에서 더 깨끗하게 수행 될 수 있습니다. – Brett

0

정한 값 :이로드 된 값이있는 경우