2017-09-27 50 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。

希望它可以幫助別人:)

相關問題