带参数和小部件的路由 JQueryAutocompleter (symfony)
我有一个带有小部件自动完成功能的表单,但是当我向 URL 添加参数时,我的小部件不起作用。
我认为这是路由问题,因为当我删除参数时,自动完成功能可以工作,但我不知道如何以及在哪里定义新路由。 (我已经在 myModule/config/routing.yml 中尝试过,但我认为我不明白如何使用新路由)。
链接到我的表单:
<a href="<?php echo url_for('refus/new?logement='.$logement->getId()) ?>">Nouveau refus</a>
操作:
public function executeAutocompleteNud(sfWebRequest $request) {
// Fonction générant une liste de locataire pour le champs autocomplete
$this->getResponse()->setContentType('application/json');
// Récupération de la chaine entrée par l'utilisateur
$string = $request->getParameter('q');
// Requète récupérant la liste des locataires dont le nom contient la chaine entrée
$requete = Doctrine::getTable('locataire')->getDataWhereNUD($string);
// Construction d'un tableau associatif à partir des résultats de la requète
$resultats = array();
foreach ($requete as $res):
$resultats[$res->getNud()] = $res->getNud();
endforeach;
return $this->renderText(json_encode($resultats));
}
public function executeNew(sfWebRequest $request)
{
$log = $request->getParameter('logement');
$refus = new Refus();
$refus->set('logement', $log);
$this->form = new refusForm($refus);
$this->setTemplate('new');
}
小部件架构:
$this->widgetSchema['locataire'] = new sfWidgetFormJQueryAutocompleter(array('url' => 'autocompleteNud',
'config' => '{
scrollHeight: 300,
autoFill: true}'));
I have a form with a widget autocomplete, but when I add a parameter to the URL, my widget doesn't work.
I think it's a problem with routing because when I delete the parameter, the autocompletion works but I don't know how and where I have to define the new route. (I have tried in myModule/config/routing.yml but I think I don't understand how to use new routing).
Link to go on my form :
<a href="<?php echo url_for('refus/new?logement='.$logement->getId()) ?>">Nouveau refus</a>
Actions :
public function executeAutocompleteNud(sfWebRequest $request) {
// Fonction générant une liste de locataire pour le champs autocomplete
$this->getResponse()->setContentType('application/json');
// Récupération de la chaine entrée par l'utilisateur
$string = $request->getParameter('q');
// Requète récupérant la liste des locataires dont le nom contient la chaine entrée
$requete = Doctrine::getTable('locataire')->getDataWhereNUD($string);
// Construction d'un tableau associatif à partir des résultats de la requète
$resultats = array();
foreach ($requete as $res):
$resultats[$res->getNud()] = $res->getNud();
endforeach;
return $this->renderText(json_encode($resultats));
}
public function executeNew(sfWebRequest $request)
{
$log = $request->getParameter('logement');
$refus = new Refus();
$refus->set('logement', $log);
$this->form = new refusForm($refus);
$this->setTemplate('new');
}
Widget schema :
$this->widgetSchema['locataire'] = new sfWidgetFormJQueryAutocompleter(array('url' => 'autocompleteNud',
'config' => '{
scrollHeight: 300,
autoFill: true}'));
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
路由系统对我来说也是一个谜,但读了很多书后也许我可以帮助你。
在应用程序中>应用程序名称>密谈> routing.yml 添加一个文件的顶部。这条路线:
这告诉 symfony 当有人请求类似以下内容时: http://hosts/index.php /refus/new/10 它应该在模块中查找拒绝名为 new 的操作并传递名为 logment_id 的参数。
执行此操作后,您应该清除缓存。
第二个想做的就是改变
这个
最后,修改你的小部件以使用新路线:
希望这有用!
routing system was a mistery to my also but after reading a lot maybe i cuold help you.
In apps > app_name > confing > routing.yml add a the TOP of the file. this route:
That tells symfony that when someone asks for something like: http://hosts/index.php/refus/new/10 it should look in the module refus an action called new and pass a parameter called logment_id .
After doing this you should clear cache.
Second think to do is to change this
for this
Finally, modify your widget to usea the new route:
Hope this is useful!
我已经用这种方式解决了我的问题:
symfony:带有一个参数的表单
I have resolved my problem using this way :
symfony : Form with one parameter