在我的symfony(v2)应用程序中,我有一个显示订单详情的代码。
<td><input type="text" name="namecpte[]" class="cpte" id="idcpte_{{loop.index}}"></td>
我必须在自动填充输入的帐号中添加一个帐号#(请参阅该行上方的代码):
$('.cpte').on("focus", function(){
var idInput = $(this).attr('id')
var a='#'+idInput;
b = $(a);
b.autocomplete({
source : function(requete, reponse){
var id = b.val();
var DATA = 'id=' + id;
$.ajax({
type:"POST",
url : "{{ path('cpte_numero') }}",
dataType : 'json',
data : DATA,
success : function(donnee){
reponse($.map(donnee, function(objet){
return objet;
}));
}
});
}
});
});
这是我的自动填充代码:
{{1}}
问题是当我输入帐号输入时,自动完成显示(所有帐户,有789个帐户)但结果未被过滤。 例如,当我输入
时45
自动填充必须返回(2个帐户)
4581 4588
但它会返回789个帐户
如何解决?提前谢谢
PS:我为我可怜的英语道歉答案 0 :(得分:0)
在cpte_numero路由指向的控制器方法中,您需要从AJAX调用中获取数据,然后根据发布到该控制器的内容过滤结果。
E.g。类似的东西:
public function cpteNumeroAction(Request $request) {
// $data = $request->request->all(); var_dump($data); // you can use this for debugging
$accountPartialId = $request->request->get('id'); // assuming your post data is this format
// then based on account partial id you can filter E.g.
$qb = $this->getEntityManager()->createQueryBuilder();
$accountIds = $qb->select('a.accountNumber')
->from('YourBundle:Account', 'a')
->where($qb->expr()->like('a.accountNumber', ':comparison'))
->setParameter('comparison', $accountPartialId . '%')
->getQuery()
->getResult();
// maybe you need to format your data a little more here
return new JsonResponse($accountIds); // maybe you have JSON, maybe some other format
}
这只是一个让你入门的方法/示例。