2010-12-31 10 views
0

Ich arbeite an einer Symfony-Anwendung, die hauptsächlich mit Formulareinreichungen arbeitet und unser Team benötigte extreme Anpassung an Validierungen daher entschieden wir uns, die Formen Helper und Widgets nicht zu verwenden. Jetzt hat jedes Formular eine Aktionsmethode zum Senden und Abrufen. Zwischen einem dieser Formulare brauche ich eine automatische Füllung, aber ich weiß nicht, wie ich dies an eine neue Aktionsmethode für das keyup -Ereignis senden und Daten von dort zurückgeben soll. Ich kann die Daten, die ich mit Firebug überprüft habe, nicht mehr von dort zurückgeben. Ich habe Artikel gefunden, die das gesamte Formular für eine automatische Suche ausfüllen. Ich kann das nicht tun, weil mein Feld zum automatischen Ausfüllen nicht das einzige Formular ist. Es ist ein Stadtfeld, zu dem ich Vorschläge machen muss. Es wird erwartet, dass ich das jQuery-Framework verwende. Bitte helfen Sie.Problem mit Auto Complete-Konzept in Symfony

Außerdem verstehe ich das AJAX-Konzept in Symfony nicht sehr gut. Es wäre wirklich hilfreich, wenn Sie mich mit ein paar guten Artikeln verbinden könnten.

Schätzen Sie alle Hilfe. Vielen Dank.

+0

Was ist die Frage, genau? Auf welches Problem stoßen Sie? Es klingt wie du sagst einfach "erklären, wie man alles über AJAX macht, wenn ich JQuery und Symfony verwende." –

Antwort

3

Der Hauptunterschied der Antwort in Symfony für Ajax-Anfrage ist die Aktion würde die Ansicht (actionSucces.php) mit dem Layout nicht schmücken (so wird es auch nicht die Web-Debug-Symbolleiste enthalten).

In Ihrem Fall können Sie die jQuery Autocomplete-Plugin (http://docs.jquery.com/Plugins/autocomplete) benutzen, um Ihre extreme Anpassung Form herzustellen: D

Sie Slot verwenden können Ihre jQuery Objektdefinition in Layout

<head> 
    <?php if (has_slot('head_script')): ?> 
    <?php include_slot('head_script') ?> 
    <?php endif ?> 
</head> 

definieren definieren Ihre jQuery automatische Vervollständigung in der extremen Anpassung Formularvorlage

<?php slot('head_script') ?> 
<?php echo javascript_tag('$(function{ 
$("#example").autocomplete("'.url_for('search/cities').'"); 
});') ?> 

<?php echo form_tag('form/result') ?> 
<?php echo tag('input', array('name'=>'example','id'=>'example')); 
</form> 

Vergessen Sie nicht, Ihre Plugins jQuery und Autocomplete einzufügen, wenn der Benutzer eine Anfrage an das angegebene Backend mit einem GET-Parameter q, der den aktuellen Wert des Eingabefelds enthält, und einem Parameter "limit" mit dem angegebenen Wert eingibt die Option max. (Siehe dazu den doc: D)

jetzt Aktion Suche/Städte erstellen und verwenden Anfrage- $> getParameter ('q'), um die Antwort

public function executeCities(sfWebRequest $request){ 
    //process the $request->getParameter('q') 
    return $this->renderText("First Second Third Fourth"); 
} 

Jubel und guten Rutsch ins neue Jahr zu füllen: D

+0

vergessen: D Das Ergebnis muss mit einem Wert in jeder Zeile zurückgegeben werden. Das Ergebnis wird in der Reihenfolge angezeigt, in der es vom Backend gesendet wird. also wäre das Ergebnis return $ this-> renderText ("First \ nSecond \ nThird \ nFourth"); – HQM

Verwandte Themen