Php Symfony2和FormBuilder:如何在生成器中添加elemetns编号
我有一个formbuilder,在其中我从实体添加一些值:Php Symfony2和FormBuilder:如何在生成器中添加elemetns编号,php,symfony,controller,twig,Php,Symfony,Controller,Twig,我有一个formbuilder,在其中我从实体添加一些值: $builder->add('affiliation', 'entity', array( 'class' => 'SciForumVersion2Bundle:UserAffiliation', 'multiple' => true, 'expanded' => true, 'query_builder' => function(EntityRepository $er)
$builder->add('affiliation', 'entity', array(
'class' => 'SciForumVersion2Bundle:UserAffiliation',
'multiple' => true,
'expanded' => true,
'query_builder' => function(EntityRepository $er) use ($author,$user) {
return $er->createQueryBuilder('ua')
->where("ua.user_id = {$user->getId()}")
->andWhere("ua.affiliation_id not in ( select pa.affiliation_id FROM SciForumVersion2Bundle:PersonAffiliation pa where pa.person_id = {$author->getPersonId()} )");
},
'required' => true,
));
在我的控制器中,我想检查我的表单中是否有内容。如果有,我将显示一个视图,如果没有,我将显示另一个视图
这可能吗?如果可能,如何实现
谢谢。试试看:
$data = $form->getData()
如果要在表单类型中获取当前数据(在呈现表单之后),可以使用标准的每个表单类型中提供的
builder
它与正常形式的响应完全相同,因此您可以使用:
$builder->getData()代码>
根据您想要生成的内容,使用if子句添加不同的字段。什么是“检查我的表单中是否有内容?”您到底在寻找什么?你的条件是基于什么?谢谢你的评论@ColinMorelli。事实上,我用2个where子句从一个实体填充生成器。如果查询返回某些内容,则会将其添加到生成器中。在我的controlelr中,我想知道查询是否返回了一些东西,因此表单中是否至少有一个元素。谢谢0x1gene,但我也得到了同样的想法:object(SciForum\Version2Bundle\Entity\PersonAffiliation)#567(5){[“id”:protected]=>NULL[“person\u id”:protected]=>NULL[“affiliation\u id”:protected]=>NULL[“个人”:受保护的]=>NULL[“从属关系”:受保护的]=>NULL}
您是在呈现表单还是在提交表单时不想知道表单中的内容?另外,您是否检查了您的查询是否在您的案例中返回了一些结果?可以尝试:$form->get('affiliation')->getData()代码>我试图在呈现时检查我的表单,而不是在提交时。根据不同的形式,我会尝试呈现不同的视图。我的查询返回了正确的结果。对于您最后的评论,我尝试过,但这只在提交表单时有效,我想知道表单中以前有什么。您能提供更多详细信息吗?$builder是什么?您在自己的问题代码中使用了生成器。它基本上是包含所有formtypes数据的对象。哦,是的,对不起。如果我的生成器是在FormType类中创建的呢?我怎样才能在控制器中获得$builder?