Мне надо дать менеджеру возможность загружать в images картинки, чтобы потом дать возможность выбрать загруженную картинку в другой форме. посмотрел http://dbhelp.ru/form-file-upload/page/ но тут Item extends CActiveRecord что и не понятно. Может кто подскажет примерный план действий.
По ссылке, автор использует CActiveRecord для того что бы воспользоваться функцией валидации, проверит что передано через post в переменную image. Если тип загруженного файла будет jpg, gif, png то происходит запись чего то в базу, и сохранение файла на сервер. Если тип не соответствует, то сново отобразиться форма с сообщением об ошибке в image.
Если не нужно делать запись в базу то можно воспользоваться и CModel или что даже лучше сразу CFileValidator
в форме ввода итема должно быть поле выбора файла,
в модели итема должно быть правило валидации
при выборе файла и сабмите выбранный файл загружается на сервер в папку image. что дальше: если делается апдейт итема - можно сделать если пусто показывать таг выбора файла если что-то есть показывать файл. но что делать если файл есть и надо его менять.
думаю сделать отдельный контроллер именно для загрузки файлов а в контроллере итемов уже дроплист выбора нужного файла. поэтому сделал вот так:
модель:
<?php
class Image extends CFormModel
{
public $image;
public function rules()
{
return array(
array('image', 'file', 'types'=>'jpg, gif, png'),
);
}
}
?>
контроллер:
<?php
class ImageController extends CController
{
public function actionCreate()
{
$model=new Image;
echo $_POST['image'];
if(isset($_POST['image']))
{
$model->attributes=$_POST['image'];
$model->image=CUploadedFile::getInstance($model,'image');
if($model->save())
{
$model->image->saveAs('images/test');
}
}
$this->render('create', array('model'=>$model));
}
}
?>