Одновременная загрузка нескольких изображений

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
pioneer
Сообщения: 136
Зарегистрирован: 2013.03.10, 23:27

Одновременная загрузка нескольких изображений

Сообщение pioneer »

Привет всем!)
Хочу у Вас спросить вот что: в БД есть таблица товара 'Good', у товара может быть 4 изображения (поля таблицы image, image2, image3, image4) соответственно. Так вот, раньше, когда было всего одно изображение и необходимости в еще трех дополнительных не было, использовался вот такое вот поведение:

Код: Выделить всё

public function behaviors()
    {

        $module = Yii::app()->getModule('catalog');
        return array(
            'CTimestampBehavior' => array(
                'class'             => 'zii.behaviors.CTimestampBehavior',
                'setUpdateOnCreate' => true,
                'createAttribute'   => 'create_time',
                'updateAttribute'   => 'update_time',
            ),
            'imageUpload' => array(
                'class'         =>'yupe\components\behaviors\FileUploadBehavior',
                'scenarios'     => array('insert','update'),
                'attributeName' => 'image',
                'minSize'       => $module->minSize,
                'maxSize'       => $module->maxSize,
                'types'         => $module->allowedExtensions,
                'uploadPath'    => $module->uploadPath,
                'fileName' => array($this, 'generateFileName'),
            ),
        );
    }
 
Как видно из кода, поведение применяется лишь для одного атрибута ('attributeName' => 'image'). Отсюда вопрос: а как применить это же поведение и для остальных трех (image2, image3, image4)? И попутно вот еще что: в админке, на странице создания (да и обновления) товара в форме лучше (и логичнее) использовать 4 отдельных file input'a ("Обзор...") для каждого из полей, верно? Или как-нибудь оптимальнее/круче посоветуете?

Спасибо :)
HQ0
Сообщения: 182
Зарегистрирован: 2012.10.17, 17:21

Re: Одновременная загрузка нескольких изображений

Сообщение HQ0 »

Вариант _в лоб_, который должен работать: дублируем behavior - для каждого image-поля своё. В форме дублируем fileField - для каждого, опять, свой.
Не знаю точно как оно там работает в yupe, но вроде всё должно пройти без проблем :)
pioneer
Сообщения: 136
Зарегистрирован: 2013.03.10, 23:27

Re: Одновременная загрузка нескольких изображений

Сообщение pioneer »

HQ0 писал(а):Вариант _в лоб_, который должен работать: дублируем behavior - для каждого image-поля своё. В форме дублируем fileField - для каждого, опять, свой.
Не знаю точно как оно там работает в yupe, но вроде всё должно пройти без проблем :)
то есть что-то типа такого?

Код: Выделить всё

'imageUpload' => array(
                'class'         =>'yupe\components\behaviors\FileUploadBehavior',
                'scenarios'     => array('insert','update'),
                'attributeName' => 'image',
                'minSize'       => $module->minSize,
                'maxSize'       => $module->maxSize,
                'types'         => $module->allowedExtensions,
                'uploadPath'    => $module->uploadPath,
                'fileName' => array($this, 'generateFileName'),
            ),
'imageUpload' => array(
                'class'         =>'yupe\components\behaviors\FileUploadBehavior',
                'scenarios'     => array('insert','update'),
                'attributeName' => 'image2',
                'minSize'       => $module->minSize,
                'maxSize'       => $module->maxSize,
                'types'         => $module->allowedExtensions,
                'uploadPath'    => $module->uploadPath,
                'fileName' => array($this, 'generateFileName'),
            ),
'imageUpload' => array(
                'class'         =>'yupe\components\behaviors\FileUploadBehavior',
                'scenarios'     => array('insert','update'),
                'attributeName' => 'image3',
                'minSize'       => $module->minSize,
                'maxSize'       => $module->maxSize,
                'types'         => $module->allowedExtensions,
                'uploadPath'    => $module->uploadPath,
                'fileName' => array($this, 'generateFileName'),
            ),
'imageUpload' => array(
                'class'         =>'yupe\components\behaviors\FileUploadBehavior',
                'scenarios'     => array('insert','update'),
                'attributeName' => 'image4',
                'minSize'       => $module->minSize,
                'maxSize'       => $module->maxSize,
                'types'         => $module->allowedExtensions,
                'uploadPath'    => $module->uploadPath,
                'fileName' => array($this, 'generateFileName'),
            ),
 
HQ0
Сообщения: 182
Зарегистрирован: 2012.10.17, 17:21

Re: Одновременная загрузка нескольких изображений

Сообщение HQ0 »

Ключи должны быть разные: imageUpload1, imageUpload2, ...
Ответить