我的Symfony表单有点问题。
这是我的代码:
class ProfileFormType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('adress',null,array('label' => 'form.adress', 'translation_domain' => 'FOSUserBundle'))
->add('niveau','entity',array(
'class'=>'EnsajAdministrationBundle:Niveau',
'property'=>'libelle'
,'multiple'=>false)
)
问题是通常它会返回指定实体的所有行,但我想只返回“niveau”(“level”)表中的第2行,以用作我的表单的选项。 / p>
这个问题的解决方案是什么?
答案 0 :(得分:2)
这里有(至少)两个选项,但显而易见的是提供QueryBuilder到提供所需行的字段(参见Symfony docs on EntityType Field)
E.g。
//Create function which accepts EntityRepository and returns required QueryBuilder
$qbFunction = function(EntityRepository $er) {
return $er->createQueryBuilder('n')
//->orderBy() //If you need to, to get the correct 2 rows!
->setMaxResults(2); //Just two rows
};
$builder->add('adress',null,array('label' => 'form.adress', 'translation_domain' => 'FOSUserBundle'))
->add('niveau','entity',array(
'class'=>'EnsajAdministrationBundle:Niveau',
'property'=>'libelle'
,'multiple'=>false
,'query_builder' => $qbFunction) //give function to field
)
如果需要,您可以使查询更复杂,例如添加联接