Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何添加新选项以选择实体_Php_Forms_Symfony - Fatal编程技术网

Php 如何添加新选项以选择实体

Php 如何添加新选项以选择实体,php,forms,symfony,Php,Forms,Symfony,我正在制作一个有很多发票的视图 用户可以按“客户”、“日期”和“参考对象”对其进行筛选 发票链接到客户,客户可以有“参照物”也可以没有。 因此,在我的“referent”选择列表中,默认值是“All”,不按“referent”过滤,其余的是QueryBuilder获得的所有引用的列表 现在,我需要帮助,以了解如何在选择列表中插入选项“无参照物”,以获取客户没有参照物的所有发票 这是我的“InvoiceSearchType”中的引用字段: ->add('referent', 'genemu_

我正在制作一个有很多发票的视图

用户可以按“客户”、“日期”和“参考对象”对其进行筛选

发票链接到客户,客户可以有“参照物”也可以没有。

因此,在我的“referent”选择列表中,默认值是“All”,不按“referent”过滤,其余的是QueryBuilder获得的所有引用的列表

现在,我需要帮助,以了解如何在选择列表中插入选项“无参照物”,以获取客户没有参照物的所有发票

这是我的“InvoiceSearchType”中的引用字段:

->add('referent', 'genemu_jqueryselect2_entity', array(
            'label' => 'Referent',
            'class' => 'GeocalUserBundle:User',
            'query_builder' => function (UserRepository $ur) {
                return $ur->getEmployesQueryBuilder();
            },
            'empty_value' => '',
            'configs' => array(
                'placeholder' => 'All',
                'width' => '100%',
                'allowClear' => true,
            ),
            'required' => false,
        ))
这里是我的QueryBuilder:

public function getEmployesQueryBuilder()
{
    $queryBuilder = $this->createQueryBuilder('u')
                        ->leftJoin('u.groups', 'g')
                        ->where('u.enabled = 1')
                        ->andWhere('g.id NOT IN(1)')
                        ->orderBy('u.nom', 'ASC')
                     ;

    return $queryBuilder;
}
我只是这样显示字段:

<td class="label">Chargé d'affaire</td>
<td colspan="2">{{ form_widget(form.referent) }}</td>
Chargéd'affaire
{{form_小部件(form.referent)}

提前感谢!:)

[SOLVED]

首先,我添加了一个获取查询结果(数组)的方法,添加另一个referent并返回它:

public function getReferentWithNull()
{
    // Get the list of referents
    $referents = $this->doctrine->getRepository('GeocalUserBundle:User')->getEmployesQueryBuilder()->getQuery()->getResult();

    // Create a new instance
    $nobody = new User();
    $nobody->setName("No Referent");

    // Put it in the array result with the key -1
    $referents[-1] = $nobody;

    return $referents;
}
然后,我将表单字段类型修改为“choice”类型,并调用我以前的函数:

->add('referent', 'genemu_jqueryselect2_choice', array(
            'label' => 'Referent',
            'choices' => $this->getReferentWithNull(),
            'empty_value' => '',
            'configs' => array(
                'placeholder' => 'All',
                'width' => '100%',
                'allowClear' => true,
            ),
            'required' => false,
        ))
最后,我有最后一个选项“No Referent”,键为-1


希望它能帮助某人:)

请显示相应的模板。。。