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:
- olvidé asignar un espacio de
namespace AppBundle/Controller;
espacio denamespace AppBundle/Controller;
- no
use Sensio/Bundle/FrameworkExtraBundle/Configuration/Template;
una declaración de uso para la plantillause 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.