Symfony2: aucun itinéraire trouvé pour " GET / lucky / number"

Je commence le tutoriel (en tant que débutant) et tout fonctionne bien jusqu'à:

Http://symfony.com/doc/current/book/page_creation.html#creating-a-page-route-and-controller à l'étape création d'une Page: Route et Controller

, j'ai créé un fichier appelé /var/www/html/[projekt]/src/AppBundle/Controller/LuckyController.php

Mais quand j'ai ouvert http://[Serveur-IP]:8000/app_dev.php/chance/nombre est toujours une erreur 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:    +

Routage.yml

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

Contrôleur

namespace AppBundleController; 

use SymfonyBundleFrameworkBundleControllerController;
use SensioBundleFrameworkExtraBundleConfigurationRoute;
use SymfonyComponentHttpFoundationResponse;

class LuckyController 
{ 

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

Aucune idée où est erreur...

erreur-Uncaught PHP Exception SymfonyComponentHttpKernelExceptionNotFoundHttpException: "aucun itinéraire trouvé pour" GET / lucky / number "" dans / var / www / html/[Symfony-Folder] / app / cache / dev / classes.PHP ligne 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
demandé sur lord_t 2015-08-10 15:13:30

10 réponses

Je viens d'ajouter un

<?php

Dans le fichier "LuckyNumberController" et cela fonctionne.... vraiment étrange.

Merci à tous

21
répondu Atreides78 2015-08-11 06:13:00

Essayez cette URL:

Http://[Serveur-IP]:8000/app_dev.php/fr/chance/nombre

Il y a un bug dans le livre Symfony: ils ont oublié le support de l'application de démonstration i18n.

Ajoutez simplement le paramètre" /en " avant les paramètres de routage.


je sais que cette question est fermée, mais j'espère que ma réponse peut aider les autres qui sont toujours confrontés à ce problème.

5
répondu pliski 2015-11-02 04:47:26

Est Parfois un problème de cache. Essayez de supprimer dev dossier /projet/var/cache/dev.

Comme authentictech dit, vous pouvez également essayer la commande:

php bin/console cache:clear

Si vous voulez spécifier l'environnement, vous devez ajouter la propriété --env=prod.

3
répondu Apuig 2017-07-23 17:42:42

Vous n'étendez pas la classe de contrôleur Symfony. Il devrait être Classe LuckyController extends 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: Après tout, le problème dans cette question n'était pas dans l'extension du contrôleur, alors ignorez ma réponse.

1
répondu Dan Mironis 2015-08-11 08:04:30

J'ai copié et collé votre contrôleur dans un projet Symfony existant et l'itinéraire est immédiatement apparu. Donc rien de mal avec le contrôleur.

J'ai également comparé le routage.yml et c'est la même chose.

La seule chose qui reste est de vérifier la structure des dossiers et assurez-vous que vous n'avez pas différents projets Symfony mélangés; peut-être que vous éditez le bon fichier mais démarrez le serveur web à partir d'un chemin différent.

Vérifiez attentivement ou reconstruisez le projet dans un chemin complètement différent. Puisque vous testez avec le serveur web intégré, vous n'avez pas besoin de mettre votre projet dans /var/www/html (en fait, il vaut mieux ne pas le faire).

0
répondu Francesco Abeni 2015-08-10 16:46:25

Http://localhost:8080/SymfonyProject/web/app_dev.php / chanceux / nombre

Ça marche pour moi. Modifiez "SymfonyProject" avec le dossier nom de votre projet ou supprimez-le si votre projet est pointé directement par le serveur. Faites également attention au port qui fonctionne pour vous (localhost: 8080). Dans mon cas est 8080, dans votre pourrait être 8000 ou autre chose.

0
répondu Marco 2016-01-11 15:32:19

Une autre raison pour laquelle vous pourriez obtenir un "No route found for" GET / luck / number " est parce que vous avez un onglet devant l'annotation @Route. Je pensais que j'avais programmé mon code exactement comme l'exemple, et obtenais cette erreur, mais il s'est avéré que c'était l'onglet.

Voir le code suivant ci-dessous, et notez que le premier produit le "No Route found..."exception:

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

 /**
 * @Route("/lucky/number")
 */
0
répondu Alvin Bunk 2016-02-07 06:39:23

Au cas où quelqu'un d'autre rencontrerait ce problème: pour moi, le problème était double:

  1. j'ai oublié d'attribuer un espace de noms namespace AppBundle\Controller;
  2. Je n'ai pas ajouté d'instruction use pour le modèle use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
0
répondu Koen Cornelis 2016-03-04 19:55:32

A eu le MÊME PROBLÈME, MAIS POUR UNE RAISON complètement différente de celles montrées ici jusqu'à présent...

D'une manière ou d'une autre, ma démo ne définissait pas de paramètres régionaux par défaut. Il semble y avoir un certain nombre de configurations qui pourraient résoudre ce problème, mais je ne suis pas assez familier avec Symfony pour connaître la cause exacte. Ma solution jusque-là est de simplement définir les paramètres régionaux dans L'URL, par exemple:

/ app_dev.php/en/chance/nombre

0
répondu Synexis 2016-06-11 19:47:28

Étendre le contrôleur de classe de base n'a pas fonctionné pour moi. Pour résoudre le problème, j'ai dû faire le changement suivant dans web / app.php

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

J'ai aussi dû ajouter ' en ' dans l'url: http://scotchbox.Démo/FR / chanceux / nombre

0
répondu Krishna 2017-05-31 11:30:04