Страница 1 из 1

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

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

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

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

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

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

Изображение

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

Добавлено: 2014.03.29, 14:27
Koduc
Спасибо, интересно.
Только вот "..inherit model from CActiveRecordWithImages.." - лучше бы, наверное, через поведение сделать.
Вместо simple_image лучше CImageHandler (тут на форуме выкладывали). Там функций поболее - ватермарки, например, накладывать.

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

Добавлено: 2014.03.29, 14:41
vova07
Почему бы не засунуть в поведение все это:

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

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

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

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

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

Добавлено: 2014.03.30, 13:52
sergmoro1
vova07 писал(а):Почему бы не засунуть в поведение все это
Обязательно попробую, спасибо)

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

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

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

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

Стараюсь использовать классы, уже определенные во framework-е. В данном случае это CMultiFileUpload. Конечно, существуют другие варианты. Например тот, что вы предложили в комментарии к предыдущему посту. Но тут мне пока поделиться нечем.

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

Добавлено: 2014.03.30, 17:04
vova07
Думал что это через AJAX, но если это стандартно то все гуд.
Касательно унаследования, подразумевалось ситуация когда я например переписал для себя CActiveRecord и все свои модели наследую от нового класа, с вашим подходом мне нужно будет или скопировать ваши методы в мой новый класс, или с моего класса в ваш актив рекорд, таким образом это не гибко, что нельзя сказать о поведениях.

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

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

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