yml world route hello component php symfony symfony-2.7 symfony-routing

php - world - Symfony2: No se ha encontrado ninguna ruta para "GET/lucky/number"



symfony redirect (10)

A veces es un problema de caché. Intente eliminar la carpeta dev de / project / var / cache / dev.

Como dice authentictech , también puedes probar el comando:

php bin/console cache:clear

Si desea especificar el entorno, debe agregar la propiedad --env = prod.

Comienzo el tutorial (como novato) y todo funciona bien hasta que:

http://symfony.com/doc/current/book/page_creation.html#creating-a-page-route-and-controller en el paso Crear una página: ruta y controlador

He creado un archivo llamado /var/www/html/[projekt]/src/AppBundle/Controller/LuckyController.php

pero cuando abro http://[Server-IP]:8000/app_dev.php/lucky/number siempre se obtiene 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: +

routing.yml

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

Controlador

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>'' ); } }

No tengo idea de dónde está el error ...

ERROR - Excepción de PHP no capturado Symfony / Component / HttpKernel / Exception / NotFoundHttpException: "No se encontró una ruta para" GET / lucky / number "en / var / www / html / [Symfony-Folder] / app / cache / dev / classes. php line 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 /


Acabo de añadir un

<?php

al archivo "LuckyNumberController" y funciona ... realmente extraño.

Gracias a todos


Copié y pegué tu controlador en un proyecto existente de Symfony y la ruta apareció de inmediato. Así que no hay nada malo con el controlador.

También comparé routing.yml y es lo mismo.

Lo único que queda es verificar la estructura de la carpeta y asegurarte de que no tengas diferentes proyectos de Symfony mezclados; quizás esté editando el archivo correcto pero iniciando el servidor web desde una ruta diferente.

Verifique cuidadosamente o reconstruya el proyecto en una ruta completamente diferente. Ya que está probando con el servidor web incorporado, no necesita poner su proyecto en / var / www / html (de hecho, es mejor no hacerlo).


En caso de que alguien más se encuentre con este problema: para mí el problema era doble:

  1. olvidé asignar un espacio de namespace AppBundle/Controller; espacio de namespace AppBundle/Controller;
  2. no use Sensio/Bundle/FrameworkExtraBundle/Configuration/Template; una declaración de uso para la plantilla use Sensio/Bundle/FrameworkExtraBundle/Configuration/Template;

En realidad no extiendes la clase Controlador Symfony. Debe ser clase LuckyController extiende el controlador

// 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>''); } }

EDITAR: después de todo, el problema en esta pregunta no estaba en la extensión del controlador, así que ignore mi respuesta.


Extender el controlador de clase base no funcionó para mí. Para resolver el problema tuve que hacer el siguiente cambio en web / app.php

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

También tuve que agregar ''en'' en la url: http://scotchbox.demo/en/lucky/number


Otra razón por la que podría obtener un "No se encontró una ruta para" GET / luck / number "es porque tiene una pestaña frente a la anotación @Route . Pensé que @Route mi código exactamente como en el ejemplo, y estaba recibiendo este error, pero Resultó que era la pestaña.

Vea el siguiente código a continuación, y observe que el primero produce la excepción "No se encontró ruta ...":

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


Prueba esta URL:

http://[Server-IP]:8000/app_dev.php/en/lucky/number

Hay un error en el libro de Symfony: olvidaron que la aplicación de demostración es compatible con i18n.

Simplemente agregue el parámetro " / en " antes de los de enrutamiento.

Sé que esta pregunta está cerrada, pero espero que mi respuesta pueda ayudar a otros que aún enfrentan este problema.


Tenía el mismo problema, pero por una razón completamente diferente a las que se muestran aquí hasta ahora ...

De alguna manera mi demo no estaba definiendo una configuración regional predeterminada. Parece que hay una serie de configuraciones que podrían solucionar esto, pero no estoy lo suficientemente familiarizado con Symfony como para saber la causa exacta. Mi solución hasta entonces es simplemente definir la configuración regional en la URL, por ejemplo:

/app_dev.php/ es / lucky / number


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

Esto funciona para mi. Cambie "SymfonyProject" con la carpeta con el nombre de su proyecto o elimínelo si el servidor apunta directamente a su proyecto. También preste atención al puerto que funciona para usted (localhost: 8080). En mi caso es 8080, en su caso podría ser 8000 o algo más.