Je commence le tutoriel (en tant que débutant) et tout va 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 contrôleur
J'ai créé un fichier appelé /var/www/html/[projekt]/src/AppBundle/Controller/LuckyController.php
mais lorsque j'ouvre http: // [IP du serveur]: 8000/app_dev.php/lucky/number }, vous obtenez toujours un 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
Manette
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>' );
}
}
Aucune idée où est l'erreur.
ERROR - Uncaught PHP exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "Aucune route trouvée 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 /
Je viens d'ajouter un
<?php
dans le fichier "LuckyNumberController" et cela fonctionne ... vraiment étrange.
Merci à tous
Essayez cette URL:
http: // [IP du serveur]: 8000/app_dev.php/fr/lucky/number
Il y a un bug dans le Symfony Book: ils ont oublié le support de l'application de démonstration i18n.
Ajoutez simplement le paramètre "/ en" avant ceux de routage.
Je sais que cette question est close mais j'espère que ma réponse pourra aider les autres qui sont toujours confrontés à ce problème.
C'est parfois un problème de cache. Essayez de supprimer le dossier dev de/project/var/cache/dev.
Comme authentictech dit, vous pouvez aussi essayer la commande:
php bin/console cache:clear
Si vous souhaitez spécifier l'environnement, vous devez ajouter la propriété --env = prod.
En fait, vous n’étendez pas la classe du contrôleur Symfony. Il devrait être la classe LuckyController étend 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 de cette question n'était pas l'extension du contrôleur, alors ignorez ma réponse.
Si quelqu'un d'autre se heurte à ce problème, le problème était double pour moi:
namespace AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
Une autre raison pour laquelle vous pouvez obtenir un "Aucun itinéraire trouvé pour" GET/chance/numéro "est parce que vous avez un onglet devant l'annotation @Route
. dehors c'était la note.
Reportez-vous au code ci-dessous et remarquez que le premier produit l'exception "Aucun itinéraire trouvé ...":
/**
* @Route("/lucky/number")
*/
/**
* @Route("/lucky/number")
*/
http: // localhost: 8080/SymfonyProject /web/app_dev.php/lucky/number
Ça marche pour moi. Changez "SymfonyProject" avec votre dossier de nom de projet ou supprimez-le si votre projet est dirigé directement par le serveur . Faites également attention au port qui vous convient (localhost: 8080). Dans mon cas, c'est 8080, dans votre pourrait être 8000 ou quelque chose d'autre.
L'extension du contrôleur de classe de base ne fonctionnait pas pour moi. Pour résoudre le problème, je devais faire le changement suivant dans web/app.php
$kernel = new AppKernel('prod', true);
Aussi, je devais ajouter 'en' dans l'URL: http: //scotchbox.demo/en/lucky/number
J'ai copié et collé votre contrôleur dans un projet Symfony existant et la route est immédiatement apparue. Donc, rien de mal avec le contrôleur.
J'ai également comparé le routing.yml et c'est la même chose.
La seule chose qui reste à faire est de vérifier la structure des dossiers et de vous assurer de ne pas mélanger différents projets Symfony; Peut-être que vous éditez le bon fichier mais que vous 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 placer votre projet dans/var/www/html (en fait, il est préférable de ne pas le faire).
Avait 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. Un certain nombre de configurations semblent pouvoir résoudre ce problème, mais Symfony n’est pas encore suffisamment familiarisé avec Symfony pour en connaître la cause exacte. Ma solution jusque-là consiste simplement à définir les paramètres régionaux dans l'URL, par exemple:
/app_dev.php/ fr / chanceux/nombre