Size: a a a

2020 March 15

D

Dima in Laravel Pro
Dmitry Eliseev
Лучше простые вещи не выделять.
Согласен полностью.
Но иногда так не хочется повторять одно и то же)
Хочется написать и применять в каждом контроллере одну строчку)
источник

YS

Yuriy Shmidt in Laravel Pro
Dima
Прошу помочь с оптимизацией.
Например, у меня есть контроллеры ProductsController и CategoryController

В обоих есть метод create
оба например делают:
$category = Category::create(['title' => $request->title);
return view('admin.categories.index', compact('categories');
и

$product = Product::create(['title' => $request->title);
return view('admin.products.index', compact('products');

Как можно оптимизировать подобно моделям через trait или тп?
выкладывай сразу говноконтроллер ))
источник

DE

Dmitry Eliseev in Laravel Pro
Dima
Согласен полностью.
Но иногда так не хочется повторять одно и то же)
Хочется написать и применять в каждом контроллере одну строчку)
А потом захочется из этих 5 строк одну где-то в двух местах поменять.
источник

DE

Dmitry Eliseev in Laravel Pro
И приплыли...
источник

D

Dima in Laravel Pro
Dmitry Eliseev
А потом захочется из этих 5 строк одну где-то в двух местах поменять.
Разумно)
источник

D

Dima in Laravel Pro
Но идею я понял. Спасибо всем за мнение.
Полезно для скила
источник

s

sheykvit in Laravel Pro
Dima
Согласен полностью.
Но иногда так не хочется повторять одно и то же)
Хочется написать и применять в каждом контроллере одну строчку)
Создай базовый контроллер с методом create. Остальные свои контроллеры унаследуй от этого. И в каждом контроллере в методе create вызывай в начале parent:: create ($model, $request)
источник

s

sheykvit in Laravel Pro
Это если не хочется сервис писать отдельный
источник

мн

мистер никитос... in Laravel Pro
sheykvit
Создай базовый контроллер с методом create. Остальные свои контроллеры унаследуй от этого. И в каждом контроллере в методе create вызывай в начале parent:: create ($model, $request)
Но интерфейс в данном случае будет сломанным. Ибо передать то туда мы можем любую модель, но не с любой моделью можно будет проделать конкретный набор действий.
источник

D

Dima in Laravel Pro
sheykvit
Создай базовый контроллер с методом create. Остальные свои контроллеры унаследуй от этого. И в каждом контроллере в методе create вызывай в начале parent:: create ($model, $request)
А куда девать наследование его от базового контроллера?
источник

мн

мистер никитос... in Laravel Pro
Dima
Но идею я понял. Спасибо всем за мнение.
Полезно для скила
Ты лучше расскажи что именно ты повторно везде делаешь
источник

s

sheykvit in Laravel Pro
Dima
А куда девать наследование его от базового контроллера?
Ролительский контроллер и унаследуешь от базового
источник

D

Dima in Laravel Pro
мистер никитос
Ты лучше расскажи что именно ты повторно везде делаешь
Ну в частности создание модели.
И в обоих случаях запись картинки.
источник

DE

Dmitry Eliseev in Laravel Pro
sheykvit
Создай базовый контроллер с методом create. Остальные свои контроллеры унаследуй от этого. И в каждом контроллере в методе create вызывай в начале parent:: create ($model, $request)
А потом кому-то не нужен будет метод create. В итоге получим кашу.
источник

мн

мистер никитос... in Laravel Pro
Dima
Ну в частности создание модели.
И в обоих случаях запись картинки.
И все?
источник

D

Dima in Laravel Pro
На текущем этапе да.
о у меня имеются и другие контроллеры с тем же алгоритмом
источник

DE

Dmitry Eliseev in Laravel Pro
Dima
Ну в частности создание модели.
И в обоих случаях запись картинки.
По DRY имеет смысл вынести в сервисы только важные единичные логические вещи, чтобы не было копипасты бизнес-логики.

А тонкие контроллеры – это инфраструктурный расходный материал. В них копипаста не страшна.
источник

мн

мистер никитос... in Laravel Pro
Dima
На текущем этапе да.
о у меня имеются и другие контроллеры с тем же алгоритмом
Ну и сделай сервис загрузки картинок, если там действительно какая-то логика а-ля создание миниатюр и т.д. А так - просто создание модели явно слишком простая штука, чтобы городить ещё один слой абстракции
источник

D

Dima in Laravel Pro
Всем спасибо за советы. Понял!
источник

AV

Alexander Voronov in Laravel Pro
Таки по красоте если выносить какие-то действия контролера в абстракцию, то можно заодно обмазаться паттерном "шаблонный метод", чтобы допустить расширение
источник