@symfony_php

Страница 454 из 1418
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
Ну по факту валидатор реквеста
именно так. Валидируем сам запрос.

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
почему? группы валидации все разрулят

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
у меня это будет две формы
Ну я самый простой пример привел. У меня была такая похожая штука, с большой формой и схожей логикой. Решал валидаторами

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
но для юзера у меня форма юзера + две формы (сайнап + редактирование)
Кейс который я описал, в том и заключался что это в одной форме ;) И форма реюзалась, и если приходилось менять форму, то в одном месье а не в двух. Правда это было не на симфоне, но не суть ;)

Вадим
05.12.2017
21:40:12
проблема такого реюзания в том, что в таких штуках не редко появляется логика. И часто не самая простая.
Угу, но по другому там не сделать, либо копировать и поддерживать все копии формы, либо поддерживать несколько групп валидаторов.

Последнее было с меньше болью

Но как я вижу, принцип этот не оч хороший

Ладно, буду смотреть твой бандл, интересно. И гляну что за аргумент резольвер, зверь такой

Спс

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

Там что-то типа xaml но не такое гибкое

Google
Вадим
05.12.2017
21:56:14
Что-то я немного не понял этого аргумент резольвера, в примере написано как типа получить авторизированого юзера, тоесть любом другом месте если я в методе буду ожидать просто юзера, мне будет приходить только текущий. Этот же резольвер нельзя подвязать на отдельный реквест

https://symfony.com/doc/current/controller/argument_value_resolver.html

По сути это типа ParamConverter, только какой-то глобальный

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 возвращает тру. А без формы это невозможно (

Arky
06.12.2017
06:21:13
$file = $request->files->get('file');
А как его переместить в папку и сохранить путь в бд?

Реквест такое не может

Dmitry
06.12.2017
06:22:27
$file->move($uploadPath, $filename);

Путь известен, осталось его в базу добавить

Arky
06.12.2017
06:24:05
$file->move($uploadPath, $filename);
Нет такого метода или это шторм гонит...

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

просто пишешь код после диспатча

в контроллере

Dmitry
06.12.2017
06:25:44
Нет такого метода или это шторм гонит...
http://api.symfony.com/master/Symfony/Component/HttpFoundation/File/UploadedFile.html#method_move

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 тоже работал

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

Arky
06.12.2017
06:45:41
из request таки приходит Symfony\Component\HttpFoundation\File\UploadedFile
http://api.symfony.com/2.3/Symfony/Component/HttpFoundation/Request.html а здесь похоже что ошибка, или только когда прописываешь files->get() получаешь инстанс UploadedFile.

Страница 454 из 1418