Php 将筛选出的实体列表分配给Symfony2表单中的实体字段
我的Symfony状态有点问题 这是我的代码:Php 将筛选出的实体列表分配给Symfony2表单中的实体字段,php,forms,symfony,Php,Forms,Symfony,我的Symfony状态有点问题 这是我的代码: class ProfileFormType extends AbstractType { /** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) {
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”(“级别”)表中的前两行,作为表单的选项
这个问题的解决方案是什么?这里有(至少)两个选项,但显而易见的一个选项是向提供所需行的字段提供QueryBuilder(请参阅)
例如
如果需要,可以使查询更加复杂,例如添加联接
//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
)