2015-06-17 7 views
5

Ich habe Yii2 Formular mit Formularfeldern je nach Aktion der Seite. Ex. Wenige Felder erscheinen, wenn die Aktion create ist und wenige erscheint, wenn die Aktion update ist. Ich möchte die erforderliche Validierung basierend auf diesem Szenario hinzufügen.Yii2 benötigt Validierung auf Update

Ex.

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

Ich zeige dieses Feld nur, wenn action => 'update'.

Jetzt möchte ich erforderliche Validierung für diese hinzufügen und ich versuchte dies:

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

Aber vor Validierung nicht funktioniert. Wenn ich on=>update entferne, dann validiert es sowohl beim Erstellen als auch beim Aktualisieren.

Jede Hilfe wäre willkommen.

+0

afaik dies sollte in Ordnung sein ... Ich werde diese Frage Star, ich bin gespannt ... – Masiorama

Antwort

9

ActiveRecord setzt das Szenario nicht automatisch beim Aktualisieren oder Erstellen von Elementen. Sie müssen die Methode update() in Ihrem Modell überschreiben und ein Szenario festlegen, das Sie benötigen. Z.B. in Ihrem Fall

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

Sie können auch Szenario gesetzt in Ihrem actionUpdate

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