@symfony_ru

Страница 16 из 138
Alexander
14.11.2016
15:57:43
В итоге придется отдельно все импортировать каждый контроллер, что по сути так на так

/foo/bar, /foo/{name}

Aleksandr
14.11.2016
15:58:02
импортировать куда и зачем?

Ivan
14.11.2016
15:58:37
насчёт импорта тоже не понял. в документацию для фронтендера что ли?

Google
Alexander
14.11.2016
15:59:43
т.е. не получится импортировать роуты так: resource: '@AppBundle/Controller/', придется прописывать отдельно каждый контроллер, если могут возникнуть коллизии

Aleksandr
14.11.2016
16:01:27
ну как по мне, звучит как надуманная проблема

симфони и логика в контроллерах?)

вы что-то путаете

это же ну уйй))

Alexander
14.11.2016
16:03:58
Ну была ситуация, когда есть fallback роут /{url}, надо чтоб он был в самом конце. Если роуты в аннотациях, то так сделать не получится

dypa
14.11.2016
16:07:26
ага, все ошибаются - а вот мы тут самые умные

контроллеры как сервисы - ну чо норм, ещё в 2013 проходили это https://knpuniversity.com/screencast/question-answer-day/controllers-services

Ivan
14.11.2016
16:08:26
странно, но доктрина сама юзает аннотации в хвост и гриву

Aleksandr
14.11.2016
16:08:50
можно спорить бесконечно

Виталий
14.11.2016
16:09:30
Всем привет. Ребят, такой вопрос. Вот есть сущность User который имплементирует табличку users в бд. Соответственно есть файлик User.php которая обрисовывает структуру таблички и имеет геттеры/сеттеры. Я хочу из контроллера вызывать что то вроде $user->notify('какой-то текст');, по вызову метода, юзеру уходит оповещение в виде смс на телефон. Как это правильней всего оформить? Ведь в Entity таким методам не место.. Сама отправка оповещения реализована сторонней библиотекой.

Ivan
14.11.2016
16:10:05
через сервис

Google
Виталий
14.11.2016
16:11:16
То есть мне для каждой сущности ещё сервис делать для поддержки толстых методов?

И как это будет в контроллере выглядеть примерно? Доку почитал, но реальных примеров реализации найти не могу

Aleksandr
14.11.2016
16:13:18
можно сервис, можно события

this->get('notifications')->userSms($user)

dypa
14.11.2016
16:15:36
То есть мне для каждой сущности ещё сервис делать для поддержки толстых методов?
в сущьностях в идеале вообще не должно быть методов с имплементацией более пары строк и внешними зависимостями от сервисов

Aleksandr
14.11.2016
16:16:29
там тоже люди логику умудряются тулить))

dypa
14.11.2016
16:22:07
там тоже люди логику умудряются тулить))
им просто нужно было брать laravel - там просто рай для возможности говнокодить

Aleksandr
14.11.2016
16:22:27
уйй ещё больший

dypa
14.11.2016
16:22:51
yii2 я не смотрел, поэтому про него говорить не могу

Aleksandr
14.11.2016
16:24:10
да почти одно и тоже с 1

Rodion
14.11.2016
16:33:01
почитай Matthias Noback - A Year With Symfony

а тебе надо просто сервис сделать

dypa
14.11.2016
16:38:04
почитай Matthias Noback - A Year With Symfony
документацию следует читать - а когда она отскакивает уже от зубов - можно и книги

Rodion
14.11.2016
16:38:29
в доке не писано про доменные менеджеры

так же как и про хендлеры форм

Виталий
14.11.2016
16:39:20
Если бы в доке были бы описаны примеры из практики, не было бы глупых вопросов

Rodion
14.11.2016
16:44:50
да складно

Google
dypa
14.11.2016
16:45:54
да складно
очень складно :) давай страницу чудо книжки где есть эта инфа

Rodion
14.11.2016
16:46:58
https://www.google.ru/search?q=a+year+with+symfony

а, страницу

глава 8, части 2 и 3

стих 4й)

dypa
14.11.2016
16:50:54
ох - ну если так читать - то в доках 146% ничего нет. номер страницы будет проще найти

в книге 8 глав? со счёта не сбился?

Rodion
14.11.2016
16:54:28
не сбился

dypa
14.11.2016
17:00:06
глав у этой книги 7, римскими цифрами обозначены. Form handlers - отличная отсебятина автора, интерфейс даже к классу написать не смог Domain managers - тоже самое, только ещё с налётом DDD

Rodion
14.11.2016
17:02:26
интересное мнение

dypa
14.11.2016
17:08:53
if (!$request->isMethod('POST')) { return false; } $form->bind($request); if (!$form->isValid()) { return false; } boilerplate code как был - так остался всё ради тонкого контроллера - так можно просто в сервис вынести код и "будет всё по феншую". разницы где говнокодить в методе контроллера или в специальном классе - нет

Rodion
14.11.2016
17:10:39
именно ради тонкого контроллера

у тебя контроллер получает реквест, "как-то" обрабатывает "данные" на его основе, формирует и возвращает респонс. обработка данных на основе реквеста - дело сервисов.

dypa
14.11.2016
17:24:22
именно ради тонкого контроллера
тонким он в какой момент становится? каков критерий?

Rodion
14.11.2016
17:29:25
когда в нем не содержится логики, не относящейся к его назначению.

Ivan
14.11.2016
17:34:50
контроллеры надо делать для api и для server render отдельно или есть другие подходы?

вот думаю зафигачить в одно или лучше разделить, и при этом чтобы не пришлось дублировать

Rodion
14.11.2016
17:39:12
RESTful API подразумевает только один url для доступа к репрезентации ресурса

но многим по большей части похер на это правило

или разделяют из удобства

Google
dypa
14.11.2016
17:39:49
когда в нем не содержится логики, не относящейся к его назначению.
получение данных из формы это зона ответственности контроллера.

Ivan
14.11.2016
17:40:44
это скорее для админки и бэкофиса

на будущее, сейчас я апи делать не буду, но нужно продумать так, чтобы потом полпроекта не переписываать)

dypa
14.11.2016
17:50:40
на будущее, сейчас я апи делать не буду, но нужно продумать так, чтобы потом полпроекта не переписываать)
завтра может не случится для проекта, за пол года не наговнокодить много

Ivan
14.11.2016
17:51:55
ну может я зря загоняюсь, действительно. Преждевременная оптимизация то ещё болото

dypa
14.11.2016
17:54:35
ну может я зря загоняюсь, действительно. Преждевременная оптимизация то ещё болото
потребуется апи - будет уже код по которому будет ясно как жить. если совсем край будет - начнешь изголяться с аннотациями и событиями контроллера, вот это будет царский говнокод ;)

Aleksandr
14.11.2016
18:09:04
jsonapi.org

Rodion
14.11.2016
19:53:05
можно обойтись одним сервисом. и метод notify некорректно будет применять модели пользователя.

dypa
14.11.2016
19:54:02
обажаю ооп, хвост виляет собакой

Rodion
14.11.2016
19:54:14
угу, натягивание кода на понятия

бля

1. у юзера нет поведения notify, он не может нотифицировать. его может нотифицировать что-то. например, Смс-нотификатор. SmsNotifier::notifyUser(UserInterface $user, string $message) 2. используй контейнер сервисов для инстанцирования и получения сервиса, чтобы не плодить экземпляры класса сервиса по всему коду. и это не единственное его преимущество.

зачем выносить получение сервиса в отдельный метод?)

то же самое с текущим юзером сессии.

наследнике? свою реализацию?

редкие юз кейсы

dypa
14.11.2016
20:16:11
где тут смайлик с попкорном

Dmitriy
14.11.2016
20:16:36
пойдет ?

Google
dypa
14.11.2016
20:17:34
кроме sylius в жизни то чтото видел?

Страница 16 из 138