【发布时间】:2016-05-02 07:56:03
【问题描述】:
我有一个实体(类别),用户可以在其中为新/编辑操作选择父级(始终为类别),其中链接是 vocabolaryId 字段。
这是我的类别类型。
class CategoryType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$vocId = $options['data']->getVocabularyId();
$builder
->add('name')
->add('vocabularyId',HiddenType::class,[
'data' => $vocId,
])
->add('description')
->add('weight',null,[
'label' => 'Posizione'
])
;
$builder->add('parent',EntityType::class,array(
'class' => 'AppBundle:Category',
'query_builder' => function (EntityRepository $er) use ($vocId) {
return $er->createQueryBuilder('c')
->where('c.vocabularyId = ?1')
->orderBy('c.name')
->setParameter(1,$vocId);
}
));
}
要获取具有相同词汇表的所有类别的列表,我使用“query_builder”参数。
当我将表单提交给 symfony 而不选择父级(或使用空表)时,它会回复我:“此值无效。” (对于父字段)。
如何设置“null”父级?我的意思是一个没有父级的类别。
编辑:我添加了“'required' => false”,就像 Stephan Vierkant 所说的那样,但现在我有另一个错误:“警告:spl_object_hash() 期望参数 1 是对象,字符串给定”
这是我的控制器的 newAction 函数:
/**
* Creates a new Category entity.
*
* @Route("/new", name="admin_category_new")
* @Method({"GET", "POST"})
*/
public function newAction(Request $request, $vocId)
{
$category = new Category($vocId);
$form = $this->createForm('AppBundle\Form\CategoryType', $category);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
dump($category);
exit();
$em->persist($category);
$em->flush();
return $this->redirectToRoute('admin_category_show', array('vocId' => $vocId, 'id' => $category->getId()));
}
return $this->render('category/new.html.twig', array(
'category' => $category,
'form' => $form->createView(),
'vocId' => $vocId
));
}
【问题讨论】:
标签: symfony symfony-forms query-builder