Загрузка файлов через модель — Yii

Yii предоставляет очень удобную систему для валидации и загрузки различных типов файлов на сервер.

Для того, чтобы начать загружать и сохранять файлы в модели нужно:

1) создать поле

public $imageFile="";

в классе модели

2) создать новое правило валидации:

array('imageFile', 'file', 'types'=>'jpg, gif, png' , 'allowEmpty'=>true),

Всё стандартно, сначала название поля, потом тип валидации, потом дополнительные параметры. У нас это тип загружаемого файла. Последнее свойство делает загрузку файла необязательной.

3) Теперь в теле контроллера нужно обработать поле:

$productModels->imageFile = CUploadedFile::getInstance($productModels, 'imageFile');
$productModels->attributes = $_POST['Product'][$i];
...
$productModels->imageFile->saveAs('storage/name'.time()'.jpg');
$productModels->image = Yii::app()->getBaseUrl(true).'/storage/name'.time().'.jpg';

Сначала мы присваиваем нашему атрибуту файл при помощи хелпера CUploadedFile.
Затем сохраняем этот файл в одной из папок (не забудьте установить права на запись папке).
И сохраняем путь до файла в виде ссылки.

Другие правила валидации типа file вы можете посмотреть на yiiframework.com

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *