routing
  • symfony1
  • jquery-autocomplete
  • 2010-12-05 44 views 0 likes 
    0

    我有一个窗口小部件自动完成,但是当我向URL添加参数时,我的窗口小部件不起作用。使用参数和小部件进行路由JQueryAutocompleter(symfony)

    我认为这是路由问题,因为当我删除参数时,自动完成工作,但我不知道如何以及在哪里定义新路由。 (我尝试过在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'); 
        } 
    

    的Widget模式:

    $this->widgetSchema['locataire'] = new sfWidgetFormJQueryAutocompleter(array('url' => 'autocompleteNud', 
                            'config' => '{ 
                              scrollHeight: 300, 
                              autoFill: true}')); 
    

    回答

    0

    我一直在使用这种方式解决了我的问题:

    symfony : Form with one parameter

    0

    路由系统是一个谜给我的也不过读了很多后,也许我cuold帮助你。 在应用程序> app_name> confing> 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它应该在模块拒行动称为新的,并通过一个名为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())); ?> 
    

    最后,修改你的小部件USEA新航线:

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

    希望这是有益的!

    相关问题