我有两种类型。一个是ProductType。第二个是ProductFeaturesType ProductFeaturesType是ProductType中的CollectionType 我想将我的变量产品从ProductType传递给ProductFeaturesType。
EDITED
我的目标是根据产品的一个属性在我的ProductFeaturesType中执行一个条件。
我尝试了以下内容:
ProductType
$builder
->add('productFeatures', CollectionType::class, array(
'entry_type' => ProductFeaturesType::class,
'allow_add' => true,
'allow_delete' => true,
'product' => $product
))
;
它不起作用。我收到以下错误消息:
选项“product”不存在。定义的选项包括:“action”,“allow_add”,“allow_delete”,“allow_extra_fields”,“attr”,“auto_initialize”,“block_name”,“by_reference”,“compound”,“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“。
你能告诉我什么是错的吗?
答案 0 :(得分:0)
Exception告诉您代码中的错误,选项产品不是表单构建器声明中的已定义选项。如果您的目的是使用您已经完成的产品功能来保存/更新产品,因为您有映射信息; MTO或MTM;在您的实体中并在表单构建器中定义collectionType。当您提交表单时,symfony将在每个功能实体中设置“传递”产品实体。 只需删除产品选项,然后尝试提交表单。
希望它有所帮助!
EDITED
您只需在类型
中添加form event listener即可$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.
});