@H_Kamol
full stack developer

Как такое делается в laravel?

Доброго времени суток.
Имеется сущность Images. И эту сущность использую для всех других , т.е. и для сохранении фотографии юзера и для продукта используется Images. Связь у них many to many.

Теперь вопрос: где в laravel можно впихнуть такую логику: на входе получаю request file далее изменяю размер и перемещаю в определенную директорию и эту логику буду использовать для всех сущностей дабы избежать дублирование.
Я так понял что в laravel использование одного контроллера в другом контроллере нежелательно, ну типа так делать неправильно. Думал использовать command bus, но к сожалению заменили на jobs, я так понял что jobs не для этих целей, они как бы в основном используются с очередями. Могу конечно использовать trait, но хочу использовать встроенный механизм laravel если конечно они существуют.

Хочу услышать как вы организуете такую логику у себя в приложении

Использую Laravel 5.2
  • Вопрос задан
  • 750 просмотров
Решения вопроса 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
Ваши варианты:
1. Использовать свой сервис, как предлагает Anatoliy Lyovkin.
2. Использовать Job.
3. Использовать модель.
4. Использовать отдельный роут для загрузки файлов и делать всё в контроллере.

Каждый из них обладает своими плюсами и минусами и каждый имеет право на жизнь.
Лично я, решая точно такую же задачу, воспользовался последним вариантом, поскольку нужно показывать миниатюры картинок при загрузке.

Думал использовать command bus, но к сожалению заменили на jobs, я так понял что jobs не для этих целей, они как бы в основном используются с очередями.
Их просто переименовали. Смысл от этого не поменялся нисколько, просто теперь их сложнее перепутать с консольными командами. Делайте так или через методы модели файла, например.
Ответ написан
Alyovkin
@Alyovkin
Full-stack developer
Создайте сервис для работы с изображениями.
Небольшой пример:
1) Создайте интерфейс для обработки изображений с необходимыми Вам методами.
interface ImageHandler {

public function upload($args);

}

2) Реализуйте эти методы в "классе-сервисе".
3) Привяжите Ваш интерфейс "классу-сервису".
$this->app->bind('pathToYourInterface', 'pathToYourService');

4) Используйте с конструкторе Вашего класса.
public function __construct(ImageHandler $handler)
{
    $this->handler = $handler;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы