2015-06-17 9 views
5

पर सत्यापन की आवश्यकता है मेरे पास पृष्ठ की कार्रवाई के आधार पर Yii2 फॉर्म है जिसमें फ़ील्ड फ़ील्ड हैं। पूर्व। कुछ फ़ील्ड तब प्रकट होते हैं जब कार्रवाई create होती है और कुछ दिखाई देता है जब कार्रवाई update होती है। मैं इस परिदृश्य के आधार पर आवश्यक सत्यापन जोड़ना चाहता हूं।Yii2 अद्यतन

पूर्व।

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

मैं केवल इस क्षेत्र को दिखा रहा हूं जब action => 'update'

अब मैं इस के लिए आवश्यक सत्यापन जोड़ना चाहते हैं और मैं इस कोशिश की:

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

लेकिन सत्यापन के ऊपर काम नहीं कर रहा। अगर मैं on=>update हटा देता हूं तो यह दोनों निर्माण और अद्यतन परिदृश्य पर मान्य है।

किसी भी मदद की सराहना की जाएगी।

+0

इस afaik में परिदृश्य सेट कर सकते हैं ठीक होना चाहिए ... मैं इस सवाल का स्टार होगा, मैं उत्सुक हूँ ... – Masiorama

उत्तर

9

ActiveRecord आइटम अपडेट या बनाने पर परिदृश्य automaticaly सेट नहीं करता है। आपको अपने मॉडल में update() विधि ओवरराइड करना होगा और आपको जिस परिदृश्य की आवश्यकता होगी उसे सेट करना होगा। जैसे आपके मामले में

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

इसके अलावा, आप अपने actionUpdate

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