Buenas
Estoy siguiendo el "Getting Started" de Symfony y me he quedado atascado en http://symfony.com/doc/2.8/page_creation.html
Al probar la pagina:
http://localhost:8000/app_dev.php/lucky/number http://localhost:8000/lucky/number
Obtengo la siguiente excepción:
[Semantical Error] The class "Symfony\Component\Routing\Route" is not annotated with @Annotation. Are you sure this class can be used as annotation? If so, then you need to add @Annotation to the _class_ doc comment of "Symfony\Component\Routing\Route". If it is indeed no annotation, then you need to add @IgnoreAnnotation("Route") to the _class_ doc comment of method AppBundle\Controller\LuckyController::numberAction() in C:\xampp\htdocs\primersf\src\AppBundle/Controller/ (which is being imported from "C:\xampp\htdocs\primersf\app/config\routing.yml"). 500 Internal Server Error - FileLoaderLoadException 1 linked Exception: AnnotationException »
Soy nuevo en este framework. He buscado y he hecho cache:clear
que da el mismo fallo
Nota: Uso Windows 7 y PHP 5.6 con el servidor embebido usando server:run
como dice el manual.
La pagina inicial y config.php funcionan perfectamente
Respuestas
Por suerte me parece que el error es fácil de solucionar. Las anotaciones (como @Route
) no es algo que PHP soporte de manera nativa (como sí hacen otros lenguajes de programación). Por eso al principio puede costar un poco más hacerlas funcionar.
Lo que siempre debes tener en cuenta son dos cosas:
- Las anotaciones tienen que estar dentro de comentarios que empiecen por
/**
Si el comentario empieza por/*
la anotación se ignora y es como si no la hubieras escrito. - Hay que importar (con
use ...
) la clase PHP que se encarga de procesar la anotación.
En tu caso, el problema es que has importado una clase Route
que no es la correcta para la anotación @Route
. Cambia lo siguiente en tu código:
// QUITA esta línea... use Symfony\Component\Routing\Route; // ...y AÑADE la siguiente línea use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
Para evitar estos problemas, fíjate que la documentación de Symfony siempre incluye en la parte de arriba los use ...
necesarios para hacer funcionar el código que estás viendo. Otra forma de evitar estos errores sería utilizar un editor avanzado como PHPStorm, que casi siempre importa la clase correcta automáticamente.
@javiereguiluz
El fallo es el 2. Sabia lo de /** para usar anotaciones (aunque nunca la he usado) pero deje a Netbeans que me importara los use automaticamente. Intente copiar el ejemplo a mano para aprender mejor y no usar copy/paste Ha sido un fallo mio.
Un saludo y muchas gracias Javier
@antoniogarcia78
Otras clases que es habitual importarlas mal al principio son Request
y Response
. Cuando las utilices, asegúrate de que sean las del namespace HttpFoundation
:
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; // ...
@javiereguiluz