2010-12-05 17 views
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'); 
    } 

ウィジェットスキーマ:

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

答えて

0

ルーティングシステムは、私もなく、多くのことを読んだ後に謎だった私のフォーム上に行くために

リンク多分私はあなたを助けるcuold。 apps> app_name> confing> routing.ymlでファイルのTOPを追加します。このルート:http://hosts/index.php/refus/new/10それは、モジュールrefusに新しいというアクションを見て、logment_idと呼ばれるパラメータを渡す必要があります。

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

誰かが何かを要求する際にsymfonyことを伝えます。

この後、キャッシュをクリアする必要があります。

第二には何をすると思います。最後に、新しいルートをuseaためにあなたのウィジェットを変更し、この

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

ため、この

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

を変更することです:

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

希望、これは便利です!

関連する問題