带参数和小部件的路由 JQueryAutocompleter (symfony)

发布于 2024-10-06 14:16:10 字数 1854 浏览 5 评论 0原文

我有一个带有小部件自动完成功能的表单,但是当我向 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

云归处 2024-10-13 14:16:10

路由系统对我来说也是一个谜,但读了很多书后也许我可以帮助你。
在应用程序中>应用程序名称>密谈> routing.yml 添加一个文件的顶部。这条路线:

refus_new_route:
  url: /refus/new/:logment_id
  params: { module: refus , action: new}
autocompleteNud:
  url: /refus/autocompleteNud/:q
  params: { module: refus , action: autocompleteNud}

这告诉 symfony 当有人请求类似以下内容时: http://hosts/index.php /refus/new/10 它应该在模块中查找拒绝名为 new 的操作并传递名为 logment_id 的参数。

执行此操作后,您应该清除缓存。

第二个想做的就是改变

<a href="<?php echo url_for('refus/new?logement='.$logement->getId()) ?>">Nouveau refus</a>

这个

<?php echo link_to('Nouveau refus', 'refus/new', array('logement' => $logement->getId())); ?>

最后,修改你的小部件以使用新路线:

sfConfig::getInstance()->getConfiguratio()->loadHelpers('Url');
$this->widgetSchema['locataire'] = new sfWidgetFormJQueryAutocompleter(array('url' => url_for('@autocompleteNud'),
                                                                                     'config' => '{
                                                                                            scrollHeight: 300,
                                                                                            autoFill: true}'));

希望这有用!

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:

refus_new_route:
  url: /refus/new/:logment_id
  params: { module: refus , action: new}
autocompleteNud:
  url: /refus/autocompleteNud/:q
  params: { module: refus , action: autocompleteNud}

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

<a href="<?php echo url_for('refus/new?logement='.$logement->getId()) ?>">Nouveau refus</a>

for this

<?php echo link_to('Nouveau refus', 'refus/new', array('logement' => $logement->getId())); ?>

Finally, modify your widget to usea the new route:

sfConfig::getInstance()->getConfiguratio()->loadHelpers('Url');
$this->widgetSchema['locataire'] = new sfWidgetFormJQueryAutocompleter(array('url' => url_for('@autocompleteNud'),
                                                                                     'config' => '{
                                                                                            scrollHeight: 300,
                                                                                            autoFill: true}'));

Hope this is useful!

一桥轻雨一伞开 2024-10-13 14:16:10

我已经用这种方式解决了我的问题:

symfony:带有一个参数的表单

I have resolved my problem using this way :

symfony : Form with one parameter

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文