您好,我的模型中有一个名为“ rank”和类型为“ integer”的字段。
在我的formType中,它是一个EntityType,因为我需要使用我的下拉菜单来选择新条目的顺序(等级)。
现在当然对表单进行验证会带来错误:
在属性路径“等级”中给出的类型为“整数”,“ App \ Entity \ ProductType”的预期参数。
如何处理这种情况? 这是Symfony 4
在模型中,我有一个字段
/**
* @ORM\Column(type="integer")
*/
private $rank;
在我的formType中,我添加此实体
->add('rank', EntityType::class, [
'class' => ProductType::class,
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('p')->orderBy('p.rank', 'ASC');
},
'choice_label' => function($productType) {
return 'nach ' . $productType->getNameDe();
},
'choice_value' => function ($productType) {
return $productType ? $productType->getRank() : '';
},
'placeholder' => 'am Anfang',
])
在控制器中
$productType = new ProductType();
$form = $this->createForm(ProductTypeType::class, $productType);
if ($request->isMethod('POST')) {
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) { /*here it breakes of course*/
$entityManager = $this->getDoctrine()->getManager();
/*Here I will set the new order (rank) to all my entries later then
but the Form validation gives me the error*/
$entityManager->persist($productType);
$entityManager->flush();
return $this->redirectToRoute('admin_product_type_index');
}
}
答案 0 :(得分:0)
return (b < a) ? b : a;
从实体(对象)中进行选择,然后返回一个实体(对象)并期望一个实体(对象)。
要更改实体类型的期望值并返回,您可能必须进行一些肮脏的黑客攻击,至少涉及data transformer-您可以将一个附加到表单字段,并在表单和表单字段之间转换数据。获得/返回的值。
您可能需要向数据转换器提供EntityRepositoryManager / EntityRepository才能正常工作。
或者您可以尝试使ChoiceType起作用(我认为这会更容易些,tbh),只需从EntityRepository生成选择即可生成您期望的等级值。