«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2021/04/22 20:32:52  №2005048 1
Блин, да что сделать с Симфони формами, чтобы я мог в ChoiceType добавить с помощью js какой-то кастомный <option>, и он у меня в результате не отсеялся и прошел валидацию?
На стаковерфлоу нагуглил какие-то полтора наркоманских совета, которые на практике не работают. Не верю что в таком продуманном большом фреймворке могут быть настолько анальные ограничения.
Ответы: >>2007526
Аноним 2021/04/24 20:03:34  №2007526 2
>>2005048
Бамп вопросу, еще актуален. Или серьезно никто в мире не знает, как обойти такое идиотское ограничение?
Ответы: >>2007528 >>2007568
Аноним 2021/04/24 20:41:38  №2007568 3
>>2007526

ChoiceType - это не внешнее представление (селект). Это виджет, в котором есть выбор из набора разрешенных вариантов и другой передать нельзя. (хотя, конечно ты можешь создать свой виджет наследованием от него и там отменить это ограничение, но это будет неправильно).

То, что тебе нужно - это TextType - виджет, который принимает любой текст. Просто при выводе надо выводить его не в виде инпута, а в виде селекта. Для этого ты наследуешься от него (в серверной логике менять ничего не надо) и делаешь свой тип ComboboxType. Для него делаешь свой twig шаблон, в котором делаешь вывод селекта + возможность ввести произвольное значение с помощью скрипта.

Так ты получишь виджет, который можно потом добавить в любую форму.
Ответы: >>2007590
Аноним 2021/04/24 21:04:21  №2007590 4
>>2007568
Спасибо огромное, ты лучший. Подозревал что-то такое, но даже примерно не понимал как это реализовать.
Ответы: >>2007594
Аноним 2021/04/24 21:07:39  №2007594 5
>>2007590
Рано радуешься. Симфони формы это нарушение принципов грамотной архитектуры как минимум.