
Sergey
05.12.2017
21:23:00
если надо - могу к выходным залить брэнчей отдельной хотя бы
с докой

Vladislav
05.12.2017
21:24:07
в форму тупо пишешь констреинты и они срабатывают до того как будет маппинг на сущность

Google

Вадим
05.12.2017
21:24:59

Vladislav
05.12.2017
21:25:03
ну вот попробуй)
->add('lol, TExtType::class, ['constraints' => [new NotBlank()]])
и будет тебе счастье

Sergey
05.12.2017
21:25:56
счастье - оно там

Вадим
05.12.2017
21:26:07
Как по мне размазано получается, хотя есть доля логики.

Vladislav
05.12.2017
21:26:12
та я б жил с удовольствием, но переписать не могу ща все.
ну и проект не сложный, так что пока летим)

Sergey
05.12.2017
21:26:36
ну так не говори о счастье)

Вадим
05.12.2017
21:26:41

Sergey
05.12.2017
21:26:42
вариант вполне рабочий, не спорю)

Vladislav
05.12.2017
21:26:46
окок))

Google

Sergey
05.12.2017
21:26:56

Vladislav
05.12.2017
21:27:00

Sergey
05.12.2017
21:27:16
как самое раннее что приходит на вход. Собственно клиенту ж интересно что у него с json-кой не так

Vladislav
05.12.2017
21:27:18
ну вот констреинты в форме и будут валидировать твой запрос(не на сущности)

Вадим
05.12.2017
21:27:40
ты о чем?
Про валидаторы на форме. Тоесть форма начинает быть не реюзабельной

Vladislav
05.12.2017
21:27:52
в смысле не реюзабельной?

Sergey
05.12.2017
21:27:53
почему? группы валидации все разрулят

Bohdan
05.12.2017
21:27:55

Vladislav
05.12.2017
21:27:59
дай кейс когда ты не можешь ее реюзнуть
типа на один запрос у тебя может быть поле, а на второй уже нет?
тут уже логика хромает

Вадим
05.12.2017
21:29:06

Vladislav
05.12.2017
21:29:42
ну логика хромает, говорю ж)
как это так может быть?
тогда у создавай две формы, одну наследуй от другой или я хз. не могу придумать кейс

Вадим
05.12.2017
21:31:28
как это так может быть?
Самый простой вариант, регистрация юзера, и редактирование. Форма логин и пароль. В редактировании пароль не обязателен.

Sergey
05.12.2017
21:32:14
либо одна форма и передавать группу в конструктор форм тайпа
но лучше сделать две формы и просто общие правила "реюзнуть"

Google

Sergey
05.12.2017
21:32:52
ну типа композиция и все такое
лепота форм симфоневых же в том что ты можешь композицию мутить

Вадим
05.12.2017
21:34:03
у меня это будет две формы
Ну я самый простой пример привел. У меня была такая похожая штука, с большой формой и схожей логикой. Решал валидаторами

Sergey
05.12.2017
21:35:55

Vladislav
05.12.2017
21:35:58
не понял как это решить валидаторами

Вадим
05.12.2017
21:36:16

Vladislav
05.12.2017
21:36:19
но для юзера у меня форма юзера + две формы (сайнап + редактирование)

Sergey
05.12.2017
21:37:20
а еще веселее перестать думать CRUD-ом и начать потихоньку смещаться к task based ui
и тогда форм у тебя будет много больше, но все маленькие
и дальше - К - композиция

Вадим
05.12.2017
21:38:28

Sergey
05.12.2017
21:39:04

Вадим
05.12.2017
21:40:12
Последнее было с меньше болью
Но как я вижу, принцип этот не оч хороший
Ладно, буду смотреть твой бандл, интересно. И гляну что за аргумент резольвер, зверь такой
Спс

Vladislav
05.12.2017
21:45:47

Вадим
05.12.2017
21:47:32
та зачем? можно же просто наследовать формы
То не симфони, к сожалению. И формы там билдятся напрямую из xml, в коллекцию обьектов. И человеки на сапорте, занимаются только созданием/редактированием хмлек с формами и валидаторами
Там что-то типа xaml но не такое гибкое

Google

Sergey
05.12.2017
21:54:17
а ну не симфони - тогда хз

Вадим
05.12.2017
21:56:14
Что-то я немного не понял этого аргумент резольвера, в примере написано как типа получить авторизированого юзера, тоесть любом другом месте если я в методе буду ожидать просто юзера, мне будет приходить только текущий. Этот же резольвер нельзя подвязать на отдельный реквест
https://symfony.com/doc/current/controller/argument_value_resolver.html
По сути это типа ParamConverter, только какой-то глобальный

Sergey
05.12.2017
21:59:12
аргумент ресолверы - более мощная штука просто

Admin
ERROR: S client not available

Вадим
05.12.2017
22:00:05

Sergey
05.12.2017
22:00:26
у тебя там цепочка ресолверов этих
кто заресолвил - тот молодец. Не заресолвил - берем следующего
потому ресолвер юзера из запроса (например по айдишке) будет выше по приоритету нежели ресолвер текущего юзера
у тебя как бы код не должен иметь подобной двусмысленности
+ ты можешь конвеншены юзать (имя аргумента тебе тоже доступно) и конфигурацию иметь... и доступ к аннотациям
словом, мощная штука

Вадим
05.12.2017
22:02:41
Ну вот например, в одном экшине я ожидаю текущего пользователя, класс юзер, а в другом случае я ожидаю тоже пользователя, но который загрузится по идентификатору в запросе из хранилища. Сигнатура методов будет одинаковая, как это решить приоритетами?

Google

vlad
06.12.2017
05:56:42
привет всем
ребята, допустим, у меня бросается событие
я его перехватываю
listener отрабатывает
как после этого передать управление контроллеру опять?

Danil
06.12.2017
06:07:55
просто пишешь код после диспатча
в контроллере

Arky
06.12.2017
06:10:51
Не могу никак найти инфу как использовать UploadedFile без формы. Объект файла создается только когда метод isValid возвращает тру. А без формы это невозможно (

Dmitry
06.12.2017
06:20:25

Arky
06.12.2017
06:21:13
Реквест такое не может

Dmitry
06.12.2017
06:22:27
$file->move($uploadPath, $filename);
Путь известен, осталось его в базу добавить

Arky
06.12.2017
06:24:05

vlad
06.12.2017
06:24:07
да вот какого-то чёрта до него не доходит
просто пишешь код после диспатча
в контроллере

Dmitry
06.12.2017
06:25:44

vlad
06.12.2017
06:25:44
а, всё, понял -_-

Arky
06.12.2017
06:27:25

Dmitry
06.12.2017
06:29:29
вот кусок рабочего в данный момент кода (symfony 4)
$file = $request->files->get('file');
$uploadPath = $this->get('kernel')->getRootDir().'/../public/uploads/product';
$file->move($uploadPath, $image->getFilename());
в symfony 3 тоже работал

Arky
06.12.2017
06:31:41

Dmitry
06.12.2017
06:38:45
из request таки приходит Symfony\Component\HttpFoundation\File\UploadedFile

Arky
06.12.2017
06:45:41