想用querybuilder使用Genemu FormBundle自动完成功能

时间:2014-03-03 09:42:03

标签: jquery symfony

我想在Genemy FormByndle中使用以下代码,以便在表单中使用自动填充功能:

$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 个答案:

答案 0 :(得分: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;
}

并在UserRepository中的getByValue函数中编写querybuilder。