Выбор изображений на удаление, добавление новых изображений.

Обсуждение документации. Переводы Cookbook и авторские рецепты.
Ответить
sergmoro1
Сообщения: 114
Зарегистрирован: 2012.11.08, 13:07

Выбор изображений на удаление, добавление новых изображений.

Сообщение sergmoro1 »

Выбор изображений на удаление, добавление новых изображений — типичная задача, когда изображений, связанных с записью, может быть несколько (CActiveRecord, CMultiFileUpload).

Есть список пользователей.

1. С записью конкретного пользователя может быть связано несколько изображений;
2. Время от времени изображения могут меняться. Должна быть возможность удалять одни и добавлять другие изображения;
3. Изображения не только должны быть закачаны на сервер, но и должна быть создана миниатюра (thumbnail), то есть должна быть возможность изменить размер изображения;
4. Изображения должны храниться в каталогах имеющих определенную структуру — /images/user/id_фирмы в которой работает пользователь.

http://lisette.su/blog/imgdoc-uploading-task/

https://github.com/sergmoro1/MultiFileU ... rkToDelete

Изображение
Аватара пользователя
Koduc
Сообщения: 140
Зарегистрирован: 2011.02.15, 18:56

Re: Выбор изображений на удаление, добавление новых изображе

Сообщение Koduc »

Спасибо, интересно.
Только вот "..inherit model from CActiveRecordWithImages.." - лучше бы, наверное, через поведение сделать.
Вместо simple_image лучше CImageHandler (тут на форуме выкладывали). Там функций поболее - ватермарки, например, накладывать.
Разработка на Yii: monoray.ru
Открытое бесплатное решение для создания сайтов по аренде/продаже недвижимости: Open Real Estate
Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Выбор изображений на удаление, добавление новых изображе

Сообщение vova07 »

Почему бы не засунуть в поведение все это:

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

$images = CUploadedFile::getInstancesByName('User[images]');
$imageModel = new ImageModel($this->sizes, $model->firm_id);
$imageModel->validate($model, $images); 
Зачем нужно унаследовать User от вашей моедли? Что если я переписал до вас CActiveRecord?
Что увидит пользователей если его изображение не прошло валидацию? Из вашего кода если отправка через AJAX, он ничего не увидит.
Советую все это дело оформить в виде поведения, многие проблему отпадут, а гибость расширения улучшется.
sergmoro1
Сообщения: 114
Зарегистрирован: 2012.11.08, 13:07

Re: Выбор изображений на удаление, добавление новых изображе

Сообщение sergmoro1 »

Koduc писал(а):"..inherit model from CActiveRecordWithImages.." - лучше бы, наверное, через поведение сделать.
Вместо simple_image лучше CImageHandler (тут на форуме выкладывали). Там функций поболее - ватермарки, например, накладывать.
Спасибо, обязательно посмотрю и попробую)
sergmoro1
Сообщения: 114
Зарегистрирован: 2012.11.08, 13:07

Re: Выбор изображений на удаление, добавление новых изображе

Сообщение sergmoro1 »

vova07 писал(а):Почему бы не засунуть в поведение все это
Обязательно попробую, спасибо)
sergmoro1
Сообщения: 114
Зарегистрирован: 2012.11.08, 13:07

Re: Выбор изображений на удаление, добавление новых изображе

Сообщение sergmoro1 »

vova07 писал(а):Зачем нужно унаследовать User от вашей модели? Что если я переписал до вас CActiveRecord?
Потому что в CActiveRecordWithImage добавлена пара методов, важных для обработки изображений. Но, возможно вы правы, и сделав поведение, наследование не понадобится. Что касается переписывания, пожалуйста. Это всегда свободно, главное не забыть вызвать parent.
Последний раз редактировалось sergmoro1 2014.03.30, 14:28, всего редактировалось 3 раза.
sergmoro1
Сообщения: 114
Зарегистрирован: 2012.11.08, 13:07

Re: Выбор изображений на удаление, добавление новых изображе

Сообщение sergmoro1 »

vova07 писал(а):Что увидит пользователь если его изображение не прошло валидацию? Из вашего кода если отправка через AJAX, он ничего не увидит.
Отправка обычная и проверка введенных значений тоже. Ajax не используется. Закачка и сохранение файлов происходит только после валидации введенных в форму значений.

Стараюсь использовать классы, уже определенные во framework-е. В данном случае это CMultiFileUpload. Конечно, существуют другие варианты. Например тот, что вы предложили в комментарии к предыдущему посту. Но тут мне пока поделиться нечем.
Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Выбор изображений на удаление, добавление новых изображе

Сообщение vova07 »

Думал что это через AJAX, но если это стандартно то все гуд.
Касательно унаследования, подразумевалось ситуация когда я например переписал для себя CActiveRecord и все свои модели наследую от нового класа, с вашим подходом мне нужно будет или скопировать ваши методы в мой новый класс, или с моего класса в ваш актив рекорд, таким образом это не гибко, что нельзя сказать о поведениях.
sergmoro1
Сообщения: 114
Зарегистрирован: 2012.11.08, 13:07

Re: Выбор изображений на удаление, добавление новых изображе

Сообщение sergmoro1 »

vova07 писал(а):таким образом это не гибко, что нельзя сказать о поведениях.
Тут Вы правы.

Тем не менее еще один вариант. Все еще без использования поведения, но теперь с ajax загрузкой.
Одна модель Image на всё приложение.
https://github.com/sergmoro1/OneImageModelForAllProject
Ответить