2016-07-15 23 views
3

In meinem Modell habe ich verschiedene Szenarien erstellt. Ich habe ein Formular, das sowohl mit create als auch mit update Methode erstellt wurde. Die Formularfelder sind wie folgtYii2 verschiedene Formularfelder beim Erstellen und bei Update-Szenario

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(); ?> 

On Update Szenario mit Ich möchte nur per E-Mail, Vorname und Nachname aus der Form gebracht werden.

Und in meiner Controller-Update-Methode verwende ich Szenario als unten Code.

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

Ich will nur bekommen die E-Mail, Vorname und Nachname Formularfelder in der Form gemacht werden, wenn ich bearbeiten. Ich möchte die anderen Felder im Formular ignorieren, wenn ich es bearbeite. Was fehlt mir hier? Vielen Dank!!

+0

Was bedeutet "erhalten nur die E-Mail, Vorname und Nachname Formularfelder, wenn ich update" .. wo .. in Controller. nach dem Senden ..? hast du auch die anderen fileds ..? Bitte erläutern Sie besser. – scaisEdge

+0

Ich meine zu sagen, wenn ich den Benutzer bearbeiten, sollte es nur die E-Mail, Vorname und Nachname Felder im Formular rendern. –

+0

Sie arbeiten mit einem Modell .. und das Modell enthält alle Felder .. – scaisEdge

Antwort

1

Sie verwenden ein Activeform mit all das Eingabefeld .. so werden alle Felder einreichen .. wenn Sie E-Mail wollen, Vorname und Nachname sollten Sie eine andere Ansicht mit onnly diesen Feldern verwenden

<?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(); ?> 

Die Szenario dann überprüfen Sie nur die Felder, die Sie ausgeschlossen haben und die Einreichung geben nur die Daten zurück, die Sie benötigen