2016-07-21 8 views
0

Ich versuche, Symfony Routing-Komponente zu verwenden, aber ich kann eine Sache nicht verstehen - wie sollte ich den Pfad zum Controller in meiner Instanz Route Klasse festlegen?Versuchen, Symfony Routing-Komponente zu starten

Zum Beispiel, ich habe ein /web Verzeichnis, in dem ich meine app.php Datei mit Code platziert:

$route = new Route('/{name}', array('controller' => 'IndexController.php')); 

und in demselben Verzeichnis platziert auch IndexController.php Datei, in Funktion gesetzt, die Parameternamen annehmen sollte und einen Wert zurückgeben:

class IndexController 
{ 

    public function helloAction($name) { 
     return 'Hello '. $name; 
    } 

} 

Aber wenn ich zu einem Pfad gehe, für ex /test sehe ich nur leere Seite.

Wie sollte ich Pfad zu Controller und Action-Funktion festlegen?

+0

Nur um zu klären, schafft die Strecke Objekt alles, was Sie tun? Weil Sie eine Routing-Infrastruktur benötigen, um tatsächlich zu routen. Folgen Sie: http://symfony.com/doc/current/components/routing/introduction.html#usage – Cerad

+0

Nein, es ist nur eine Zeile Code :) –

+0

Okay. Beginnen Sie, indem Sie dem Link folgen, den ich Ihnen gegeben habe. Dadurch erhalten Sie die Parameter für die angepasste Route. Danach müssen Sie eine Art Controller-Resolver implementieren, um die Controller-Methode auszuführen. Viel Spaß. Dies könnte hilfreich sein: http://symfony.com/doc/current/book/from_flat_php_to_symfony2.html – Cerad

Antwort

0

Ihre IndexController sollte nicht in der /web Ordner, sondern in der /src/YourBundleName Ordner sein und Sie müssen zuerst Ihre Route in der Symfony registrieren.

Verwenden Symfony Konsole ein Bündel und einen Controller für Sie zu generieren:

// Generate bundle 
php bin/console generate:bundle 

// Generate controller 
php bin/console generate:controller 

Der Controller Generator Sie Routen fragt und Routen automatisch für Sie generiert.

Verwendung kann eine andere Symfony Konsolenbefehl verwenden Ihre registrierten Routen überprüfen:

php bin/console debug:router 

Wenn Sie nicht Ihre Route hier sehen kann, ist es nicht registriert ist, und Sie können nicht darauf zugreifen.

+0

Ich benutze nicht Symfony, ich versuche nur separate Komponenten von Symfony in meinem Projekt zu implementieren –

1

Sie brauchen nicht Pfad zu Ihrem Controller zu setzen - Sie PSR-4 und setzen FQCN unter ‚Controller‘ Schlüssel folgen sollte (oder nur IndexController::class)