it-swarm.com.de

Symfony2: Keine Route für "GET/Glück/Zahl" gefunden

Ich starte das Tutorial (als Neuling) und alles funktioniert gut bis: 

http://symfony.com/doc/current/book/page_creation.html#creating-a-page-route-and-controller in Schritt Erstellen einer Seite: Route und Controller

Ich habe eine Datei mit dem Namen /var/www/html/[projekt]/src/AppBundle/Controller/LuckyController.php erstellt.

aber wenn ich öffne http: // [Server-IP]: 8000/app_dev.php/lucky/number bekomme ich immer eine 404:

No route found for "GET /lucky/number"
404 Not Found - NotFoundHttpException
1 linked Exception: ResourceNotFoundException »

[2/2] NotFoundHttpException: No route found for "GET /lucky/number"   +
[1/2] ResourceNotFoundException:    +

routing.yml

app: 
    resource: "@AppBundle/Controller/" 
    type: annotation

Regler 

namespace AppBundle\Controller; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Response;

class LuckyController 
{ 

    /**
     * @Route("/lucky/number") 
     */
    public function numberAction() 
    { 
        $number = Rand(0, 100);
        return new Response( '<html><body>Lucky number: '.$number.'</body></html>' ); 
    }
}

Keine Ahnung, wo der Fehler ist ...

ERROR - Nicht erfasst PHP Ausnahme Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "Keine Route für" GET/lucky/number "" unter/var/www/html/[Symfony-Ordner]/app/cache/dev/classes.php Zeile 2061 

php app/console debug:route
 [router] Current routes
 Name                     Method Scheme Host Path
 _wdt                     ANY    ANY    ANY  /_wdt/{token}
 _profiler_home           ANY    ANY    ANY  /_profiler/
 _profiler_search         ANY    ANY    ANY  /_profiler/search
 _profiler_search_bar     ANY    ANY    ANY  /_profiler/search_bar
 _profiler_purge          ANY    ANY    ANY  /_profiler/purge
 _profiler_info           ANY    ANY    ANY  /_profiler/info/{about}
 _profiler_phpinfo        ANY    ANY    ANY  /_profiler/phpinfo
 _profiler_search_results ANY    ANY    ANY  /_profiler/{token}/search/results
 _profiler                ANY    ANY    ANY  /_profiler/{token}
 _profiler_router         ANY    ANY    ANY  /_profiler/{token}/router
 _profiler_exception      ANY    ANY    ANY  /_profiler/{token}/exception
 _profiler_exception_css  ANY    ANY    ANY  /_profiler/{token}/exception.css
 _configurator_home       ANY    ANY    ANY  /_configurator/
 _configurator_step       ANY    ANY    ANY  /_configurator/step/{index}
 _configurator_final      ANY    ANY    ANY  /_configurator/final
 _twig_error_test         ANY    ANY    ANY  /_error/{code}.{_format}
 homepage                 ANY    ANY    ANY  /
21
Atreides78

Ich habe gerade ein hinzugefügt 

<?php

auf die Datei "LuckyNumberController" und es funktioniert .... wirklich seltsam.

Danke an alle

22
Atreides78

Versuchen Sie diese URL:

http: // [Server-IP]: 8000/app_dev.php/de/glück/nummer

Es gibt einen Fehler im Symfony-Buch: Sie haben die Unterstützung der Demo-App i18n vergessen.

Fügen Sie einfach den Parameter "/en" vor den Routing-Parametern hinzu.


Ich weiß, dass diese Frage geschlossen ist, aber ich hoffe, dass meine Antwort anderen helfen kann, die noch mit diesem Problem konfrontiert sind.

5
pliski

Manchmal liegt ein Cache-Problem vor. Versuchen Sie, den Ordner " dev " aus "/ project/var/cache/dev" zu entfernen.

Wie authentictech sagt, können Sie auch den Befehl versuchen:

php bin/console cache:clear

Wenn Sie die Umgebung angeben möchten, müssen Sie die Eigenschaft --env = prod hinzufügen.

3
Apuig

Sie erweitern die Symfony Controller-Klasse tatsächlich nicht. Es sollte Klasse sein, LuckyController erweitert Controller

// src/AppBundle/Controller/LuckyController.php 
namespace AppBundle\Controller; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 
use Symfony\Component\HttpFoundation\Response;

class LuckyController extends Controller {

     /** 
      * @Route("/lucky/number") 
      */ 
     public function numberAction() { 
         $number = Rand(0, 100); 
         return new Response('<html><body>Lucky number: '.$number.'</body></html>');
     }

}

EDIT: Immerhin bestand das Problem in dieser Frage nicht darin, den Controller zu erweitern. Ignoriere meine Antwort.

1
Dan Mironis

Falls jemand anderes auf dieses Problem stößt: Für mich war das Problem zweifach:

  1. ich habe vergessen, einen Namespace zu vergeben namespace AppBundle\Controller;
  2. ich habe keine Gebrauchsanweisung für die Vorlage use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; hinzugefügt.
0
Koen Cornelis

Ein weiterer Grund dafür, dass Sie möglicherweise eine "Keine Route gefunden für" GET/luck/number "erhalten, ist, weil Sie vor der @Route-Annotation einen Tabulator haben. Ich dachte, ich hätte meinen Code genau wie im Beispiel programmiert, und diese Fehlermeldung wurde angezeigt raus war es die tab.

Sehen Sie sich den folgenden Code an, und beachten Sie, dass der erste die Ausnahme "Keine Route gefunden ..." erzeugt:

/**
 *  @Route("/lucky/number")
 */

 /**
 * @Route("/lucky/number")
 */
0
Alvin Bunk

http: // localhost: 8080/SymfonyProject /web/app_dev.php/lucky/number

Für mich geht das. Ändern Sie "SymfonyProject" mit Ihrem Projektnamenordner oder löschen Sie es, wenn Ihr Projekt direkt auf den Server zeigt. Beachten Sie auch den für Sie geeigneten Port (localhost: 8080). In meinem Fall ist 8080, in Ihrem könnte es 8000 sein oder etwas anderes.

0
Marco

Das Erweitern der Basisklasse Controller hat für mich nicht funktioniert. Um das Problem zu lösen, musste ich die folgende Änderung in web/app.php vornehmen

$kernel = new AppKernel('prod', true);

Ich musste auch "en" in der URL hinzufügen: http: //scotchbox.demo/en/lucky/number

0
Krishna

Ich habe Ihren Controller in ein vorhandenes Symfony-Projekt kopiert und eingefügt, und die Route wurde sofort angezeigt. Also nichts falsch mit dem Controller.

Ich habe auch die routing.yml verglichen und es ist das gleiche.

Jetzt müssen Sie nur noch die Ordnerstruktur überprüfen und sicherstellen, dass keine verschiedenen Symfony-Projekte gemischt sind. Vielleicht bearbeiten Sie die richtige Datei, starten den Webserver jedoch von einem anderen Pfad.

Prüfen Sie sorgfältig, oder erstellen Sie das Projekt auf einem völlig anderen Weg. Da Sie mit dem eingebetteten Webserver testen, müssen Sie Ihr Projekt nicht in/var/www/html speichern (in der Tat ist es besser, dies nicht zu tun).

0
Francesco Abeni

Hatte das gleiche Problem, aber aus einem ganz anderen Grund als den hier gezeigten bisher ...

Irgendwie definierte meine Demo kein Standardgebietsschema. Es scheint eine Reihe von Konfigurationen zu geben, die dies angehen könnten, aber ich bin mit Symfony noch nicht genug vertraut, um die genaue Ursache zu kennen. Meine Lösung bis dahin ist, einfach das Gebietsschema in der URL zu definieren, zum Beispiel:

/app_dev.php/ de / glück/zahl

0
Synexis