2017-09-27 36 views
0

我正在处理一个包含大量发票的视图。如何添加新选项以选择实体

用户可以通过'客户','日期'以及'参考'来过滤它们。

发票与客户相关联,并且客户可以拥有或不具有“所指对象”。

所以在我的'指涉'选择列表中,默认值是'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

请显示相应的模板... – Rafael

回答

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; 
} 

然后,我改性我的表单字段类型为“选择”类型,并调用我之前的功能:

->add('referent', 'genemu_jqueryselect2_choice', array(
      'label' => 'Referent', 
      'choices' => $this->getReferentWithNull(), 
      'empty_value' => '', 
      'configs' => array(
       'placeholder' => 'All', 
       'width' => '100%', 
       'allowClear' => true, 
      ), 
      'required' => false, 
     )) 

最后,我有最后一个选项'No Ref erent',键为-1。

希望它可以帮助别人:)

相关问题