我正在处理包含大量发票的视图。
用户可以按“客户”,“日期”以及'参照'过滤它们。
发票与客户相关联,客户可以有“指示对象”。
所以在我的'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>
提前致谢! :)
答案 0 :(得分:1)
<强> [解决] 强>
首先,我添加了一个获取查询结果(数组)的方法,添加另一个引用并返回它:
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。
希望它可以帮助某人:)