Rodion
app_dev совсем ниче не сообщает?
Дмитрий
вообще ничего
на странице только сообщение от nginx
An error occurred.
Sorry, the page you are looking for is currently unavailable.
Please try again later.
If you are the system administrator of this resource then you should check the error log for details.
Faithfully yours, nginx.
Danil
Это точно app_dev?
Danil
Включи дебаг и все
Дмитрий
точно app_dev и дебаг включен
если ставлю IP старой базы, то все работает
Rodion
я бы смотрел конфиг nginx
Rodion
К.О.
D
Добрый вечер, доки и стаковер не спасают.
Засим прошу совета тут. Касательно collectionType повсеместно разбираются случаи, где на фронтэнде добавляют что-то новое через например "allow_add".
У меня же ситуация обратная, хочу закачать данные в этот тип формы со стороны бэкэнда, и предоставить редактирование закачанных данных (объектов/сущностей) до сабмита.
В кратце задумка такова, что.
1) получаю csv-таблицу, создаю объекты из её данных (n рядов csv файла = n новых объектов)
2) заворачиваю каждый объект в форму, где редактируемые пропертис представлены input=text. Заворачиваю вот так например : $this->createForm(MyTypeToBePartOfCollection::class, $entityFilledByCSV);
3) сгружаю все формы в одну, где есть 1 тип - collectionType.
4) вывожу таблицу с n рядами-объектами, где каждое поле - редактируемое property объекта. Имею n рядов и 1 кнопку, которая спасёт, сабмит и сохранит.
Вопрос - как сгрузить формы с объектами в одну глобальную, где 1 поле collectionType ? Наподобие $this->createForm(MyTypeToBePartOfCollection::class, $entityFilledByCSV);
Помогите, прошу.
Alexey
Alexey
Добрый вечер, доки и стаковер не спасают.
Засим прошу совета тут. Касательно collectionType повсеместно разбираются случаи, где на фронтэнде добавляют что-то новое через например "allow_add".
У меня же ситуация обратная, хочу закачать данные в этот тип формы со стороны бэкэнда, и предоставить редактирование закачанных данных (объектов/сущностей) до сабмита.
В кратце задумка такова, что.
1) получаю csv-таблицу, создаю объекты из её данных (n рядов csv файла = n новых объектов)
2) заворачиваю каждый объект в форму, где редактируемые пропертис представлены input=text. Заворачиваю вот так например : $this->createForm(MyTypeToBePartOfCollection::class, $entityFilledByCSV);
3) сгружаю все формы в одну, где есть 1 тип - collectionType.
4) вывожу таблицу с n рядами-объектами, где каждое поле - редактируемое property объекта. Имею n рядов и 1 кнопку, которая спасёт, сабмит и сохранит.
Вопрос - как сгрузить формы с объектами в одну глобальную, где 1 поле collectionType ? Наподобие $this->createForm(MyTypeToBePartOfCollection::class, $entityFilledByCSV);
Помогите, прошу.
2. Зачем заворачивать каждый объект в форму? Все объекты кладутся в поле-коллекцию одного объекта, который уже и скармливается форме.
Точнее сложно сказать, т.к. задача неясна.
Но тебе, скорее всего, будет полезно посмотреть как работают с коллекциями и как в качестве поля формы использовать другую форму (чтобы редактировать элементы коллекции).
D
2. Зачем заворачивать каждый объект в форму? Все объекты кладутся в поле-коллекцию одного объекта, который уже и скармливается форме.
Точнее сложно сказать, т.к. задача неясна.
Но тебе, скорее всего, будет полезно посмотреть как работают с коллекциями и как в качестве поля формы использовать другую форму (чтобы редактировать элементы коллекции).
Каждый объект заворачивается в форму, так как его проперти должны быть представленны в виде редактируемых колонок. Читал про Embed Forms, вынес, что много форм встроить в одну - это запросто. Сейчас вот голову чешу что делать)) Ну то есть вот в примерах есть такое, что есть у меня форма "добавить статью", а в ней embed form "добавить тэг". И я могу жать например "+тэг" и добавить до бесконечности тэгов к статье. У меня же ситуация наоборот - тэги у меня уже готовые на бэкенде, только их разное количество всё время. Сама статья мне н@x не нужна, а нужно вывести именно их, тэгов родненьких, проверить их правильность с возможностью редактирования и сохранить. Таким образом чтобы такое провернуть, мне нужна "подставная" статья, как объект, который я буду форме скармливать ?
Alexey
Каждый объект заворачивается в форму, так как его проперти должны быть представленны в виде редактируемых колонок. Читал про Embed Forms, вынес, что много форм встроить в одну - это запросто. Сейчас вот голову чешу что делать)) Ну то есть вот в примерах есть такое, что есть у меня форма "добавить статью", а в ней embed form "добавить тэг". И я могу жать например "+тэг" и добавить до бесконечности тэгов к статье. У меня же ситуация наоборот - тэги у меня уже готовые на бэкенде, только их разное количество всё время. Сама статья мне н@x не нужна, а нужно вывести именно их, тэгов родненьких, проверить их правильность с возможностью редактирования и сохранить. Таким образом чтобы такое провернуть, мне нужна "подставная" статья, как объект, который я буду форме скармливать ?
А в чём проблема-то сейчас? Что не работает?
fink3L
будь проклят этот коллекшен тайп)
D
А в чём проблема-то сейчас? Что не работает?
в том способе, который я описал в первом посте - тупо не знаю как сложить готовые формы, хранящие объекты в 1 collectionType глобальной формы, которая всё и всех отрисует и кнопку сабмит еще 1 на всех.
Alexey
Насколько я понимаю, то, что тебе надо вот тут описано:
https://symfony.com/doc/current/form/form_collections.html
Тот самый один объект, о котором я говорил в данном случае будет Task. А то, что ты собрался заворачивать в больших количествах - Tag.
D
fink3L
аминь)
тоже с ним страдаю, утром писал, хотя я вообще страдаю с формами)
Alexey
1. Разбираешь CSV. Из каждой строчки создаёшь по объекту B (см. Tag). Добавляешь их к объекту A в коллекцию (см. Task).
2. Задаёшь объект A как data для формы (TaskType), которая содержит поле с коллекцией, которое обрабатывается другой формой, где уже описаны поля для каждого объекта (TagType).
3. ???
4. PROFIT
D
Alexey
Для начала отрендери всё это простым {{ form(your_form) }}. А потом уже разбирайся с кастомизацией.
Alexey
Сделай логику разбора всего этого, добейся чтобы она работала, а потом делай вывод формы, когда уверен, что всё в бэкэнде работает.
D
fink3L
сейчас глупость спрошу, простите :)
fink3L
а вообще нормальная практика делать сущности чисто под формы?
fink3L
а то слишком много боли
Alexey
Сущности или DTO?
Alexey
Вообще, здесь нужно как всегда потыкать @fes0r, он людит рассказывать почему формы не нужны и если юзать их, то как.
Alexey
Ну DTO.
fink3L
возможно
Alexey
А потом ты его провалидируешь, сделаешь с ним что-нибудь и слепишь из этого Entity.
Rodion
Есть кстати DataMapperInterface и DataTrasformerInterface, если че
Rodion
чтобы на лету из формы лепить Entity
Rodion
https://speakerdeck.com/webmozart/symfony-forms-101
Rodion
в этом докладе описано
Alexey
Я лично в последнее время пришёл как минимум к тому, что десериализацию напрямую в сущности уже не делаю - это неудобно и сулит костылями.
А с формами пока DTO не юзал просто потому, что не подвернулось ещё. Но вообще, если следовать заветам о том, что сущность всегда должна быть валидна, то да, под форму лучше DTO склепать.
Rodion
валидна = в том числе иметь id?
Alexey
Это тоже.
fink3L
спасибо, буду разбираться
Rodion
в конфиге формы можно написать closure создания сущности с непустым конструктором. тоже в презе есть про это.
Rodion
видео к презе тоже есть
Rodion
весело то, что в доках нигде не написано ни про написание, ни про использование своих датамапперов.
Sergey
Sergey
вроде
Sergey
когда в последний раз юзал формы - в доках все было
Rodion
про дата трансформеры есть
Дмитрий
Ребята, а как прикрутить свои шаблоны форм авторизации/регистрации для FOSUser или надо править те что лежат в vendor (тогда при обновлении они затрутся)
D
D
самый простой способ - положить вот так app/Resources/FOSUserBundle/views/layout.html.twig
Alexey
Но лучше доку почитать :)
D
аминь 🙏 :)
Anonymous
Админь!
Danil
Это наверное самый популярный вопрос по FOSUserBundle)
Danil
Уже 100000 статей на эту тему
Danil
Никто не спрашивает про приоритетность подключения ресурсов, все спрашивают про rewrite fos user bundle tempaltes
Rodion
вопрос по event dispatcher - я могу где-то в конфиге явно указать метод listener'а к исполнению при срабатывании слушателя на событие?
Alexey
В EventSubscriber ты это и делаешь. В EventListener ты в теге указываешь метод.
Alexey
Это же в документации описано на фоне специальной серой плашечки, которая поясняет, как это работает.
Alexey
> There is an optional tag attribute called method which defines which method to execute when the event is triggered.
fink3L
Л - "Логика где?"
createForm(MyType::class, ['textFieldName' => 'its works', 'choicesFieldName' => ['its', 'not', 'work']]);
Sergey
fink3L
fink3L
мне кажется не логичным, что в текстовое поле можно передать дефолт значение таким образом, в коллекцию тоже можно подсунуть массив, а в choice нельзя.
Alexey
А в шторме, случайно, нет быстрого способа обернуть уже написанный кусок кода в try-catch/if/etc выделив его и дёрнув хоткей/меню?
Alexey
Вопрос снимается. CTRL+ALT+T :)
Дмитрий
в FOSUserBundle нет разве админки по управлению пользователями? (удаление, назначение ролей и тд) или все через консоль делается?
fink3L
fink3L
в интернетах инструкция есть
Антон
это очень больно
fink3L
D
больно это формы в формах через коллекшнтайп
fink3L
Антон
проще написать кастомную - немного больше по времени, зато -100 к гемморою
fink3L
вообще формы больно
Антон
у нас симфони чисто на бэкенде ☺️
Aleksandr
формы - зло
Anonymous
формы - зло
а мне предъявляли за то что я REST не на формах реализовал