В Symfony я пытаюсь создать тип, основанный на EntityType. Идея состоит в том, чтобы иметь поле EntityType, параметры которого загружаются через AJAX (используя библиотеку Selectize). Однако, как только опция была выбрана, мне нужно динамически добавить его в свой тип. Для этого я использую eventlistener на FormEvents :: post_submit , чтобы обновить свое поле с помощью опции. К сожалению, поле больше не присутствует в $ form-> getData () после отправки.
my type:
class ClientEntityType extends AbstractType
{
public function __construct(
private readonly ClientsRepository $clientsRepository,
private readonly RouterInterface $router,
) {
}
public function getParent(): string
{
return EntityType::class;
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults($this->getOptions());
}
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event): void {
$data = $event->getData();
$form = $event->getForm();
$options = $this->getOptions();
if ($data) {
$client = $this->clientsRepository->find($data);
$choices = [];
$choices[(string) $client] = $client;
$options['choices'] = $choices;
$options['data'] = $client;
}
$form->getParent()->add(
$form->getName(),
self::class,
$options
);
});
}
private function getOptions(): array
{
return [
'class' => Clients::class,
'label' => 'Client',
'required' => false,
'attr' => [
'class' => 'clientSelect',
'data-search-url' => $this->router->generate('admin_client_search'),
],
'placeholder' => 'Choisir une société',
'choices' => [],
];
}
}
< /code>
тип моей формы: < /p>
class InvoiceListType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
// ...
->add('client', ClientEntityType::class);
}
}
< /code>
Мой контроллер: < /p>
$form = $this->createForm(InvoiceListType::class, $data);
if (
$form->handleRequest($request)->isSubmitted()
&& $form->isValid()
) {
$data = $form->getData();
$data['client'] // Is missing!
// But I get the value with:
$form->get('client')->getData();
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... y-sub-type
Отсутствуют данные после самостоятельной работы по пользовательскому суббонскому субъекту ⇐ Php
Кемеровские программисты php общаются здесь
1755613867
Anonymous
В Symfony я пытаюсь создать тип, основанный на EntityType. Идея состоит в том, чтобы иметь поле EntityType, параметры которого загружаются через AJAX (используя библиотеку Selectize). Однако, как только опция была выбрана, мне нужно динамически добавить его в свой тип. Для этого я использую eventlistener на FormEvents :: post_submit , чтобы обновить свое поле с помощью опции. К сожалению, поле больше не присутствует в $ form-> getData () после отправки.
my type:
class ClientEntityType extends AbstractType
{
public function __construct(
private readonly ClientsRepository $clientsRepository,
private readonly RouterInterface $router,
) {
}
public function getParent(): string
{
return EntityType::class;
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults($this->getOptions());
}
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event): void {
$data = $event->getData();
$form = $event->getForm();
$options = $this->getOptions();
if ($data) {
$client = $this->clientsRepository->find($data);
$choices = [];
$choices[(string) $client] = $client;
$options['choices'] = $choices;
$options['data'] = $client;
}
$form->getParent()->add(
$form->getName(),
self::class,
$options
);
});
}
private function getOptions(): array
{
return [
'class' => Clients::class,
'label' => 'Client',
'required' => false,
'attr' => [
'class' => 'clientSelect',
'data-search-url' => $this->router->generate('admin_client_search'),
],
'placeholder' => 'Choisir une société',
'choices' => [],
];
}
}
< /code>
тип моей формы: < /p>
class InvoiceListType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
// ...
->add('client', ClientEntityType::class);
}
}
< /code>
Мой контроллер: < /p>
$form = $this->createForm(InvoiceListType::class, $data);
if (
$form->handleRequest($request)->isSubmitted()
&& $form->isValid()
) {
$data = $form->getData();
$data['client'] // Is missing!
// But I get the value with:
$form->get('client')->getData();
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79738951/missing-data-after-self-update-of-a-custom-symfony-sub-type[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия