2017-09-27 11 views
0

私はたくさんの請求書を持つビューで作業しています。エンティティを選択するために新しいオプションを追加する方法

「Customer」、「Date」、「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

【解決しよう】

まずIは、クエリの(配列)、別の参照先を追加し、それを返す結果を取得する方法を追加しました:私は変性そして

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 「-1」のキーで「erent」を選択します。

誰かを助けることを願っています:)

関連する問題