
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
через сервис

dypa
14.11.2016
16:10:15

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

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

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

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

dypa
14.11.2016
16:43:31

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 в жизни то чтото видел?