Формы Symfony 3.4: передача переменных из одного типа в другой - PullRequest
0 голосов
/ 08 июня 2018

У меня есть два типа.Одним из них является ProductType.Вторым является ProductFeaturesType.ProductFeaturesType - это CollectionType внутри ProductType.Я хотел бы передать свой переменный продукт из ProductType в ProductFeaturesType.

EDITED

Моя цель - выполнить условие в моем ProductFeaturesType в зависимости от одного свойства моего продукта.

Я попробовал следующее:

ProductType

$builder
            ->add('productFeatures', CollectionType::class, array(
                'entry_type' => ProductFeaturesType::class,
                'allow_add' => true,
                'allow_delete' => true,
                'product' => $product
            ))
        ;

Не сработало.Я получил следующее сообщение об ошибке:

Опция "product" не существует.Определены следующие параметры: «действие», «allow_add», «allow_delete», «allow_extra_fields», «attr», «auto_initialize», «block_name», «by_reference», «component», «constraints», «csrf_field_name», «csrf_message»"," csrf_protection "," csrf_token_id "," csrf_token_manager "," data "," data_class "," delete_empty "," отключено "," документация "," empty_data "," entry_options "," entry_type "," error_bubbling ",«error_mapping», «extra_fields_message», «inherit_data», «invalid_message», «invalid_message_parameters», «label», «label_attr», «label_format», «mapped», «method», «post_max_size_message», «property_path», «prototype"," prototype_data "," prototype_name "," required "," translation_domain "," trim "," upload_max_size_message "," validation_groups ".

Не могли бы вы сказать мне, что не так?

1 Ответ

0 голосов
/ 11 июня 2018

Исключение говорит вам, что не так в вашем коде, опционный продукт не является определенной опцией внутри объявлений построителя форм.Если вы намереваетесь сохранить / обновить продукт, используя функции продукта, вы уже сделали это, поскольку у вас есть информация о сопоставлении;МТО или МТМ;в ваших сущностях и определил collectionType в построителе форм.Когда вы отправляете форму, Symfony установит «pass», сущность продукта в каждой из сущностей функций.Просто удалите опцию продукта и попробуйте отправить форму.

Надеюсь, это поможет!

EDITED

Вам нужно только добавить прослушиватель событий формы для вашего типа

$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
            $event->getData(); // here you have all the data to be set which match with the data_class option of your type
            $event->getForm(); //here you have the form and you can manipulate it as you wish.
});
...