2014-03-03 18 views
2

我想與Genemy FormByndle使用下面的代碼,這樣我可以在我的表單中使用自動完成:想用Genemu FormBundle自動完成與QueryBuilder的

$builder->add('users', 'entity', array(
    'class' => 'AcmeHelloBundle:User', 
    'query_builder' => function(EntityRepository $er) { 
     return $er->createQueryBuilder('u') 
      ->orderBy('u.username', 'ASC'); 
    }, 
)); 

我試過:

$builder 
    ->add('user', 'genemu_jqueryautocomplete_entity', array(
     'class' => 'AcmeHelloBundle:User', 
     'query_builder' => function(EntityRepository $er) { 
      return $er->createQueryBuilder('u') 
      ->orderBy('u.username', 'ASC'); 
     }, 
    )) 

但query_builder不是genemu_jqueryautocomplete_entity中的參數。

有沒有辦法擴展它?

回答

1

你可以在動作查詢生成器的結果,並呼籲在genemu_jqueryautocomplete

這裏的路線是一些例子:

$builder ->add('users','genemu_jqueryautocomplete_text', array(
        'route_name' => 'retrieve_users_name', 
      )); 

和我有retributive_users_name路線的動作: `

/** 
* @Route("/retrieve-users-name", name="retrieve_users_name") 
*/ 
public function retrieve_users_nameAction(Request $request) 
{ 
    $value = $request->get('term'); 

    //retriving users 
    $users = $this->getDoctrine()->getRepository('XYBundle:User') 
            ->findByValue($value); 
    // convert the result to array 
    $search = array(); 
    foreach ($users as $user) { 
    $search[$user->getId()] = $user->getName(); 
    } 

    $response = new Response(); 
    $response->headers->set('Content-Type', 'application/json'); 
    $response->setContent(json_encode($search)); 

    return $response; 
} 

並在使用getByValue函數中編寫您的querybuilder rRepository。