2016-07-15 6 views
3

私のモデルでは、さまざまなシナリオを作成しました。私は、両方のメソッドを作成し、更新メソッドをレンダリングされる1つのフォームがあります。私は私の電子メール、ファーストネームとラストネームは、フォームからレンダリングしたい更新シナリオを使用するには作成と更新シナリオでのYii2の異なるフォームフィールド

Form.php

<?php $form = ActiveForm::begin(); ?> 

<?= $form->errorSummary($model, $options = ['header'=>'', 'class'=>'pull-left errorDiv']); ?> 

      <?= $form->field($model, 'user_fname')->textInput(['class'=>'form-control']);?> 
      <?= $form->field($model, 'user_lname')->textInput(['class'=>'form-control']); ?> 
      <?= $form->field($model,'user_email')->textInput(['class'=>'form-control']); ?> 
      <?= $form->field($model, 'user_password_hash')->passwordInput([]); ?> 
      <?= $form->field($model, 'user_password_hash_repeat')->passwordInput(['class'=>'form-control']); ?> 
      <?php $items = ArrayHelper::map(SimAuthAssignment::find()->all(),'item_name' ,'item_name');?> 
      <?= $form->field($mode, 'item_name')->dropDownList($items,[]);?> 

<div class="form-group"> 
    <?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> 
</div> 

<?php ActiveForm::end(); ?> 

を次のようにフォームフィールドがあります。

const SCENARIO_REGISTER = 'signup'; 
const SCENARIO_CREATE = 'create'; 
const SCENARIO_UPDATE = 'update'; 

public function scenarios() 
{ 
    return [ 

      self::SCENARIO_REGISTER => ['user_email', 'user_password_hash', 'user_fname', 'user_lname', 'agree','!user_password_hash_repeat','required'], 
      self::SCENARIO_CREATE => ['user_email', 'user_password_hash', 'user_fname', 'user_lname','!user_password_hash_repeat','required'], 
      self::SCENARIO_UPDATE => ['user_email', 'user_fname', 'user_lname', 'required'], 
    ]; 
} 

public static function tableName() 
{ 
    return 'sim_user'; 
} 

私のコントローラのアップデート方法では、以下のコードを使用しています。

public function actionUpdate($id) 
    { 
     $model = $this->findModel($id); 
     $model->scenario = SimUser::SCENARIO_UPDATE; 
     // var_dump($model->scenario); exit(); 
     $mode = \app\modules\auth\models\SimAuthAssignment::find()->where(['user_id' => $id])->one(); 


     if ($model->load(Yii::$app->request->post())&& $mode->load(Yii::$app->request->post())) { 
      $model->save(); 

      return $this->redirect(['view', 'id' => $model->user_id]); 
     } else { 
      return $this->renderAjax('update', [ 
       'model' => $model, 
       'mode' => $mode, 
      ]); 
     } 
    } 

私は編集時に電子メール、ファーストネーム、ラストネームのフォームフィールドのみをフォームに表示したいと思っています。私は編集時にフォームの他のフィールドを無視したい。私はここで何が欠けていますか?ありがとう!!

+0

「私が更新するときに電子メール、ファーストネーム、ラストネームのフォームフィールドを取得する」という意味は、提出後..?あなたはまた、他のfiledsを持っている..?どうぞよろしくお願いします。 – scaisEdge

+0

私は、ユーザーを編集するときにフォームの電子メール、名字、姓のフィールドのみを表示する必要があります。 –

+0

モデルで作業しています。モデルにはすべてのフィールドが含まれています。 – scaisEdge

答えて

1

あなたは電子メールのみをしたいのであれば、すべてのフィールドは、あなたがonnlyこれらのフィールド

<?php $form = ActiveForm::begin(); ?> 

<?= $form->errorSummary($model, $options = ['header'=>'', 'class'=>'pull-left errorDiv']); ?> 

      <?= $form->field($model, 'user_fname')->textInput(['class'=>'form-control']);?> 
      <?= $form->field($model, 'user_lname')->textInput(['class'=>'form-control']); ?> 
      <?= $form->field($model,'user_email')->textInput(['class'=>'form-control']); ?> 

<div class="form-group"> 
    <?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> 
</div> 

<?php ActiveForm::end(); ?> 

で別のビューを使用する必要があり、姓と名の ..提出されている...すべての入力フィールドとのActiveFormを使用していますあなたが支配しているフィールドのみをチェックし、必要なデータのみを返す

関連する問題