如何检索在 Symfony 表单中配置为“mapped”=> false 的表单字段?

Sru*_*ruj 6 symfony

如何检索已配置"mapped" => false且不属于 Symfony 表单中表单实体的一部分的表单字段?

\n\n

表单提交后,表单对象不包含配置为"mapped" => false名为mainCheckbox的字段。

\n\n

表单生成器:

\n\n
class DocumentCategoryType extends AbstractType\n{\n    public function buildForm(FormBuilderInterface $builder, array $options)\n    {\n        $builder\n            ->add(\'name\', TextType::class, array(\n                \'label\' => \'Podkategoria\'))\n            ->add(\'mainCheckbox\', CheckboxType::class, array(\n                \'label\'    => \'Kategoria g\xc5\x82\xc3\xb3wna\',\n                "mapped" => false,\n            ))\n            ->add(\'parentId\', EntityType::class, array(\n                \'label\'    => \'Kategoria g\xc5\x82\xc3\xb3wna\',\n                \'class\' => IntraDocumentCategory::class,\n                \'query_builder\' => function (EntityRepository $er) {\n                    return $er->createQueryBuilder(\'c\')\n                        ->where(\'c.parentId = :parent\')\n                        ->setParameter(\'parent\', 0);},\n                \'choice_label\' => \'name\',\n            ))\n            ->add(\'save\', SubmitType::class, array(\'label\' => \'Dodaj\'));\n    }\n
Run Code Online (Sandbox Code Playgroud)\n\n

控制器:

\n\n
$documentCategory = new IntraDocumentCategory();\n$form = $this->createForm(DocumentCategoryType::class, $documentCategory);\n$form->handleRequest($request);\n\nif ($form->isSubmitted() && $form->isValid()) {\n    $formData = $form->getData();\n
Run Code Online (Sandbox Code Playgroud)\n\n

虽然调试$formData是一个对象AppBundle\\Entity\\IntraDocumentCategory并且只包含它们的字段,而不是来自表单生成器的mainCheckbox。

\n

Ren*_*hle 7

您可以使用以下语法访问表单字段:

$form->get('mainCheckbox')->getData();
Run Code Online (Sandbox Code Playgroud)

如果该字段存在,那么您应该获取该字段的值。