2013-02-05 40 views
6

Hi tôi đã cảnh báo chuỗi trong nhật ký khi chèn và cập nhật hành độngKhông thể thiết lập thuộc tính không an toàn

2013/02/05 16:43:57 [warning] [application] Failed to set unsafe attribute "logo" of "Model". 

Quy định đối với mô hình

public function rules() 
{ 
    return array(
     array('typeId, cityId, new', 'numerical', 'integerOnly'=>true), 
     array('title, url', 'length', 'max'=>255), 
     array('content, created, deleted', 'safe'), 

     array('url', 'url', 'on'=>'insert, update'), 

     array('typeId, cityId, title', 'required', 'on'=>'insert, update'), 

     array('logo', 'file', 'types'=>'jpg, jpeg, gif, png', 'maxSize'=>100*1024, 'allowEmpty'=>true, 'tooLarge'=>'{attribute} is too large to be uploaded. Maximum size is 100kB.'), 

     array('id, typeId, cityId, title, content, new, url, logo', 'safe', 'on'=>'search'), 
    ); 
} 

Tôi không thể hiểu tại sao tôi nhận được worning này. Tôi có quy tắc cho lĩnh vực logo và có allowEmpty tùy chọn cho nó

Trả lời

16

CFileValidator là theo mặc định không an toàn, từ docs:

an toàn tài sản (có sẵn kể từ v1.1.12) công boolean $ an toàn;

liệu các thuộc tính được liệt kê với trình xác thực này có nên được coi là an toàn để gán lớn không. Đối với trình xác thực này, giá trị mặc định là false.

Vì vậy, thiết lập thuộc tính an toàn là true

array('logo', 'file', 'types'=>'jpg, jpeg, gif, png','safe'=>true, 'maxSize'=>100*1024, 'allowEmpty'=>true, 'tooLarge'=>'{attribute} is too large to be uploaded. Maximum size is 100kB.'), 
+1

Cảm ơn bạn !!!!!! – dr0zd

3

Bạn phải thiết lập safe thuộc tính của CFileValidator true

array('logo', 'file', 'types'=>'jpg, jpeg, gif, png','safe'=>true, 'maxSize'=>100*1024, 'allowEmpty'=>true, 'tooLarge'=>'{attribute} is too large to be uploaded. Maximum size is 100kB.'), 
+0

Cảm ơn bạn !!!!!! – dr0zd

0

Trong Yii2

Nguyên nhân có thể bạn nhận được lỗi này do các hình thức 'enctype' không được thiết lập đúng cách cho tập tin tải lên.

Failed to set unsafe attribute 'id' in 

Enable dạng multipart/form-data

// Form 
$form = ActiveForm::begin(['options'=>['enctype'=>'multipart/form-data']]); 
Các vấn đề liên quan