2015-06-17 13 views
5

Ho il modulo Yii2 contenente i campi modulo in base all'azione della pagina. Ex. Pochi campi appaiono quando l'azione è create e pochi appaiono quando l'azione è update. Voglio aggiungere la convalida richiesta in base a questo scenario.Yii2 richiesta di convalida all'aggiornamento

Es.

<?= $form->field($model, 'unique_identifier')->textInput(['maxlength' => 45]) ?> 

Sto mostrando questo campo solo quando action => 'update'.

Ora voglio aggiungere Convalida richiesta per questo e ho provato questo:

[['unique_identifier'], 'required', 'on' => 'update'], 

Ma soprattutto la convalida non funziona. Se rimuovo on=>update quindi convalida sia nello scenario di creazione che di aggiornamento.

Qualsiasi aiuto sarebbe apprezzato.

+0

afaik questo dovrebbe essere ok ... io STAR questa domanda, sono curioso ... – Masiorama

risposta

9

ActiveRecord non imposta lo scenario automaticamente quando si aggiorna o si creano elementi. È necessario sostituire il metodo update() nel modello e impostare lo scenario di cui si ha bisogno. Per esempio. nel tuo caso

public function update($runValidation = true, $attributeNames = null) 
{ 
    $this->scenario = 'update'; 
    return parent::update($runValidation, $attributeNames); 
} 

Inoltre è possibile impostare lo scenario nel vostro actionUpdate

public function actionUpdate($id) 
{ 
    $model = $this->findModel($id); 
    $model->scenario = 'update'; 
    //load data from request, save model etc. 
} 
Problemi correlati