2015-06-17 39 views
5

Tôi có biểu mẫu có chứa biểu mẫu Yii2 tùy thuộc vào hành động của trang. Ví dụ Một vài trường xuất hiện khi hành động là create và ít xuất hiện khi hành động là update. Tôi muốn thêm xác nhận yêu cầu dựa trên kịch bản này.Yêu cầu xác thực Yii2 khi cập nhật

Ví dụ:

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

Tôi chỉ hiển thị trường này khi action => 'update'.

Bây giờ tôi muốn thêm xác nhận yêu cầu cho điều này và tôi đã cố gắng này:

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

Nhưng trên xác nhận không làm việc. Nếu tôi xóa on=>update thì xác thực của nó trên cả tạo và cập nhật kịch bản.

Mọi trợ giúp sẽ được đánh giá cao.

+0

afaik này nên được ok ... Tôi sẽ sao câu hỏi này, tôi tò mò ... – Masiorama

Trả lời

9

ActiveRecord không đặt tự động hóa kịch bản khi bạn cập nhật hoặc tạo mục. Bạn phải ghi đè lên phương thức update() trong mô hình của mình và đặt kịch bản mà bạn cần. Ví dụ. trong trường hợp của bạn

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

Ngoài ra bạn có thể thiết lập kịch bản trong bạn actionUpdate

public function actionUpdate($id) 
{ 
    $model = $this->findModel($id); 
    $model->scenario = 'update'; 
    //load data from request, save model etc. 
} 
Các vấn đề liên quan