2016-09-22 4 views
4

Ich möchte meine alle Methoden von Controller, die von AJAX-Anfrage ausgeführt werden, in separaten Ordner verschieben. Zum Beispiel erstellen Sie die Datei UserBundle/Ajax/Ajax.php und legen Sie in dieser Datei alle meine AJAX-Anfrage-Methoden.Handle AJAX-Anfragen in getrennten Verzeichnis/Dateien

Ist es der richtige Ansatz, um Ajax-Anfragen von normalen http-Anfragen zu trennen? Ich kann keine Beispiele finden, wie es geht. Es ist möglich in Symfony? Ich muss Symfony\Bundle\FrameworkBundle\Controller\Controller in dieser Ajax.php Datei erweitern? Das wird in Ordnung sein, das wird existieren zwei Ordner in Bundle Ajax und Controller, enthält Controller aber zuerst für Ajax-Anfrage und zweitens für normale HTTP-Anfrage?

Kennen Sie irgendein architektonisches Muster für dieses Problem?

Antwort

1

Ich glaube nicht, dass es irgendein Problem nur zu tun, ist, dass, stellen Sie sicher, den Routing-Pfad richtig zu definieren:

Ein Beispiel für Annotation-Routing:

# app/config/routing.yml 
app_bundle: 
    resource: "@AppBundle/Controller" 
    type:  annotation 
    prefix: /

app_bundle_ajax: 
    resource: "@AppBundle/Ajax" 
    type:  annotation 
    prefix: /

Ich muss Symfony verlängern \ Bundle \ FrameworkBundle \ Controller \ Controller in dieser Ajax.php-Datei?

Es ist nicht zwingend notwendig, aber die Symfony\Bundle\FrameworkBundle\Controller\Controller liefern Ihnen ausgezeichnete Abkürzungen wie $this->json(...); seit Symfony 3.1

+0

Ich würde es lieber benennen: '@ AppBundle/AjaxController' – COil

0

Sie einfach AjaxController als Service erstellen können, die die AJAX-Anfragen erhalten. Dann können Sie jede Anfrage an verschiedene Controller umleiten und sie werden JsonResponces() zurückgeben.