我使用jQueryUI自动填充来获取城市列表。我使用json数组来显示城市,但我无法让列表显示出来。
这是我的Ajax功能:
/**
* @Route("/ajax", name="ajax")
*/
public function ajaxAction(Request $request)
{
$value = $request->get('term');
$em = $this->getDoctrine()->getEntityManager();
$branches = $em->getRepository('AOFVHFlyBundle:City')
->findByName($value);
// Get branches by user if non-admin
$json = array();
foreach ($branches as $branch) {
$json[] = array(
'label' => sprintf('%s (%s)', $branch['name'], $branch['departement']),
'value' => $branch['id']
);
}
$response = new Response();
// better way to return json - via header?
$response->setContent(json_encode($json));
return $response;
}
以下是表单输入:
->add('reqdeparture', 'genemu_jqueryautocompleter_entity', array(
'class' => 'AOFVH\FlyBundle\Entity\City',
'property' => 'name',
'route_name' => 'ajax',
'attr' => array(
'placeholder'=>'Départ',
'autocomplete' => 'on')
))
无论我在输入中输入什么,都不会出现任何内容。 知道为什么吗? (起初我以为是因为收集太大了,但我几乎没有50个城市)
答案 0 :(得分:0)
您可以使用JsonResponse对象。 Content-Type标题将是' application / json'。 Symfony管理字符以自动转义,其他条件则返回正确规范化的JSON。
use Symfony\Component\HttpFoundation\JsonResponse;
/**
* @Route("/ajax", name="ajax")
*/
public function ajaxAction(Request $request)
{
$value = $request->get('term');
$branches = $this->get("doctrine.orm.default_entity_manager")
->getRepository("NamespaceMyBundle:Entity")
->findByName($value);
$json = array();
foreach ($branches as $branch) {
$json[] = array(…);
}
return new JsonResponse($json);
}