Foros del Web » Programando para Internet » PHP » Symfony »

[SOLUCIONADO] Duros inicios con Symfony 2

Estas en el tema de Duros inicios con Symfony 2 en el foro de Symfony en Foros del Web. Hola a todos, Acabo de iniciar mi aventura con Symfony2 hace unos días y tengo que reconocer que está costando mucho... Me han hablado muy ...
  #1 (permalink)  
Antiguo 09/07/2014, 12:38
 
Fecha de Ingreso: febrero-2008
Mensajes: 31
Antigüedad: 16 años, 10 meses
Puntos: 0
Pregunta Duros inicios con Symfony 2

Hola a todos,

Acabo de iniciar mi aventura con Symfony2 hace unos días y tengo que reconocer que está costando mucho... Me han hablado muy bien de este framework pero hasta ahora no he podido apreciar sus virtudes. Todo lo que me encuentro son dificultades, errores y más errores...

En fin, a ver si alguien me puede echar una mano.

Estoy siguiendo el libro de Desarollo web ágil con symfony 2. He creado los primeros 4 bundles tal y como se explica en el libro pero hay algo que no está haciendo bien. Al probar ejecutar la aplicación saltan los siguientes errores:

2/2 FileLoaderLoadException: Cannot import resource "@UsuarioBundle/Resources/config/routing.yml" from "/var/www/Proyectos/Cupon/app/config/routing.yml". Make sure the "UsuarioBundle" bundle is correctly registered and loaded in the application kernel class.

1/2 InvalidArgumentException: Bundle "UsuarioBundle" does not exist or it is not enabled. Maybe you forgot to add it in the registerBundles() method of your AppKernel.php file?

Sin embargo el Bundle está creado y bien registrado:

#app/config/routing.yml
usuario:
resource: "@UsuarioBundle/Resources/config/routing.yml"
prefix: /

#app/AppKernel.php
public function registerBundles()
{
$bundles = array(
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
new Symfony\Bundle\SecurityBundle\SecurityBundle(),
new Symfony\Bundle\TwigBundle\TwigBundle(),
new Symfony\Bundle\MonologBundle\MonologBundle(),
new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle (),
...
new Cupon\UsuarioBundle\UsuarioBundle(),
);

Ruta del Bundle Creado
/src/Cupon/UsuarioBundle

¿Alguien puede decirme por qué insiste en que el bundle no está definido cuando sí lo está?

Gracias anticipadas y saludos
  #2 (permalink)  
Antiguo 09/07/2014, 12:58
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 9 meses
Puntos: 137
Respuesta: Duros inicios con Symfony 2

Intenta borrar tu cache.
__________________
>> abimaelmartell.com
  #3 (permalink)  
Antiguo 09/07/2014, 13:00
 
Fecha de Ingreso: febrero-2008
Mensajes: 31
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Duros inicios con Symfony 2

Lo he probado (varias veces) y nada. No parece que el problema venga por ahí...
  #4 (permalink)  
Antiguo 09/07/2014, 13:04
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 9 meses
Puntos: 137
Respuesta: Duros inicios con Symfony 2

El bundle lo creaste con el generador?
__________________
>> abimaelmartell.com
  #5 (permalink)  
Antiguo 09/07/2014, 13:09
 
Fecha de Ingreso: febrero-2008
Mensajes: 31
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Duros inicios con Symfony 2

Sí, tal cual se especifica en el libro:

$ php app/console generate:bundle --namespace=Cupon/UsuarioBundle
--bundle-name=UsuarioBundle --dir=src/ --format=yml --no-interaction
  #6 (permalink)  
Antiguo 09/07/2014, 13:16
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 9 meses
Puntos: 137
Respuesta: Duros inicios con Symfony 2

dices que creaste mas bundles, ¿los demas no te dan problemas?
__________________
>> abimaelmartell.com
  #7 (permalink)  
Antiguo 09/07/2014, 13:28
 
Fecha de Ingreso: febrero-2008
Mensajes: 31
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Duros inicios con Symfony 2

De entrada no, solo marca error en el bundle Usuario. Pero parece que también contienen el mismo error (están creados de la misma forma). He hecho la prueba de eliminar el bundle de Usuario, limpiar la caché y volver a ejecutar la aplicación.
Me ha dado el mismo error pero con el bundle TiendaBundle. Parece que tiene que ver con cómo Symfony los está creando...
  #8 (permalink)  
Antiguo 09/07/2014, 13:36
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 9 meses
Puntos: 137
Respuesta: Duros inicios con Symfony 2

¿y estas seguro que el bundle se llama UsuarioBundle?

Dentro del directorio "src/Cupon/UsuarioBundle" hay una clase, ese es el nombre del bundle.
__________________
>> abimaelmartell.com
  #9 (permalink)  
Antiguo 10/07/2014, 10:37
 
Fecha de Ingreso: febrero-2008
Mensajes: 31
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Duros inicios con Symfony 2

Sí, tal y como dices el fichero existe.

src/Cupon/UsuarioBundle/UsuarioBundle.php

Y su contenido es:

<?php

namespace Cupon\UsuarioBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class UsuarioBundle extends Bundle
{
}


No sé que más revisar. Voy a implementar el bundle "hola mundo" de la documentación oficial de Symfony 2.4 rezando para que funciones y, si es así, lo compararé con estos a ver si encuentro algo...
  #10 (permalink)  
Antiguo 10/07/2014, 10:56
 
Fecha de Ingreso: febrero-2008
Mensajes: 31
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Duros inicios con Symfony 2

He creado el bundle AcmeHelloBundle tal y como indica la documentación oficial y, sorpresa, me da el mismo error.

2/2 FileLoaderLoadException: Cannot import resource "@AcmeHelloBundle/Resources/config/routing.yml" from "/var/www/Proyectos/Cupon/app/config/routing.yml". Make sure the "AcmeHelloBundle" bundle is correctly registered and loaded in the application kernel class.

1/2 InvalidArgumentException: Bundle "AcmeHelloBundle" does not exist or it is not enabled. Maybe you forgot to add it in the registerBundles() method of your AppKernel.php file?

Muestra el error para el último bundle creado pero realmente les pasa a todos lo mismo...
Estoy por borrar la instalación de symfony y bajarlo de nuevo, por si hubiera algo mal... voy a probar.
  #11 (permalink)  
Antiguo 10/07/2014, 12:05
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 9 meses
Puntos: 137
Respuesta: Duros inicios con Symfony 2

Es muy raro, ¿estas en linux?
__________________
>> abimaelmartell.com
  #12 (permalink)  
Antiguo 10/07/2014, 12:16
 
Fecha de Ingreso: febrero-2008
Mensajes: 31
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Duros inicios con Symfony 2

Estoy usando Ubuntu 13.04.

He hecho una nueva instalación de symfony, esta vez especificando la versión 2.4.5 (antes era la 2.4.6) por si era un problema de la versión y he seguido los pasos indicados en la documentación oficial. Sigue exactamente el mismo problema.

Lo más raro es que el bundle DemoBundle, que viene por defecto con la aplicación, funciona correctamente... Estoy viendo las rutas de este y como está añadido en el appKernel pero de momento no he sacado nada en claro.
  #13 (permalink)  
Antiguo 10/07/2014, 12:20
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 9 meses
Puntos: 137
Respuesta: Duros inicios con Symfony 2

Será error de cache quizas.

¿Has ejecutado "app/console cache:clear"?

Y ¿en qué momento te da el error?
__________________
>> abimaelmartell.com
  #14 (permalink)  
Antiguo 10/07/2014, 12:36
 
Fecha de Ingreso: febrero-2008
Mensajes: 31
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Duros inicios con Symfony 2

Sí, sí. He limpiado cache varias veces.

El erro me lo da cuando accedo por url:
http://localhost/Proyectos/symfony/web/app_dev.php/hello/Kraiten

Estaba viendo ahora que el error se está generando en el fichero app/config/routing.yml
Es probar por probar pero cuando comento la ruta del bundle, deja de dar ese error. Entonces sale el siguiente:
No route found for "GET /hello/Kraiten"

No creo que sea gran cosa pero por lo menos certifica que el error está en la definición de esa ruta.
He creado el bundle HolaBundle y lo estoy probando. Ahora mismo la aplicación me queda así:

RUTA DEL BUNDLE:
src/Acme/HolaBundle

FICHERO app/AppKernel.php
...
new Acme\HolaBundle\HolaBundle(),
}

FICHERO app/config/routing.yml
hola:
resource: "@HolaBundle/Resources/config/routing.yml"
prefix: /

FICHERO src/Acme/HolaBundle/Resources/config/routing.yml
hola:
path: /hola/{name}
defaults: { _controller: HolaBundle:Hola:index }

FICHERO src/Acme/HolaBundle/Controller/HolaController.php
namespace Acme\HolaBundle\Controller;

use Symfony\Component\HttpFoundation\Response;

class HolaController
{

public function indexAction($name)
{
return new Response('<html><body>Hola '.$name.'!</body></html>');
}

}


URL EJECUTADA (tras limpiar cache)
http://localhost/Proyectos/symfony/web/app_dev.php/hola/Kraiten

El error:
2/2 FileLoaderLoadException: Cannot import resource "@HolaBundle/Resources/config/routing.yml" from "/var/www/Proyectos/symfony/app/config/routing.yml". Make sure the "HolaBundle" bundle is correctly registered and loaded in the application kernel class.

1/2 InvalidArgumentException: Bundle "HolaBundle" does not exist or it is not enabled. Maybe you forgot to add it in the registerBundles() method of your AppKernel.php file?
  #15 (permalink)  
Antiguo 10/07/2014, 17:08
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 5 meses
Puntos: 379
Respuesta: Duros inicios con Symfony 2

Pareciera cosa de los espacio que requiere el routing.yml para ser leido; Recuerda usar espacio y no tabs en cualquiera de los archivos .yml,
Prueba creando otro bundle pero usa el formato annotation
Código PHP:
Ver original
  1. app/console generate:bundle --namespace=Acme/HelloBundle --format=annotation
verifica si te hace lo mismo
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #16 (permalink)  
Antiguo 12/07/2014, 01:01
 
Fecha de Ingreso: febrero-2008
Mensajes: 31
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Duros inicios con Symfony 2

Hola hhs, gracias por tu respuesta.

Lo malo es que sigue sin funcionar. Lo bueno es que ya no muestra dos errores, sino que tan solo uno, el siguiente:

1/1 FileLoaderLoadException: Cannot load resource "@AcmeHelloBundle/Controller/". Make sure the "AcmeHelloBundle" bundle is correctly registered and loaded in the application kernel class.

Por lo demás, el bundle se ha creado en la ruta:
src/Acme/HelloBundle

Se ha registrado en AppKernel.php
Código PHP:
    public function registerBundles()
    {
        
$bundles = array(
            ...
            new 
AcmeHelloBundleAcmeHelloBundle(),
        ); 
También ha creado la ruta en app/config/routing.yml.
acme_hello:
resource: "@AcmeHelloBundle/Controller/"
type: annotation
prefix: /


Lo que sí que he visto, no sé si es normal, no me ha creado un fichero routing.yml dentro del bundle. En la carpeta src/Acme/HelloBundle/Resources/config/ solo existe el fichero services.xml

También me ha creado un controlador por defecto con el siguiente código
Código PHP:
<?php

namespace AcmeHelloBundleController
;

use 
SymfonyBundleFrameworkBundleControllerController;
use 
SensioBundleFrameworkExtraBundleConfigurationRoute;
use 
SensioBundleFrameworkExtraBundleConfigurationTemplate;

class 
DefaultController extends Controller
{
    
/**
     * @Route("/hello/{name}")
     * @Template()
     */
    
public function indexAction($name)
    {
        return array(
'name' => $name);
    }
}
EL namespace real es: namespace Acme\HelloBundle\Controller;

Última edición por kraiten; 12/07/2014 a las 01:08 Razón: error visualización de barras invertidas en código php
  #17 (permalink)  
Antiguo 13/07/2014, 11:00
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 5 meses
Puntos: 379
Respuesta: Duros inicios con Symfony 2

Bueno entonces podemos considerar que puede ser la forma en la que se esta escribiendo mal el routing.yml por eso te pedí que crearas el bundle mediante anotaciones.
revisa que tenga el formato que debe de usarse para los archivos yml
Código PHP:
Ver original
  1. acme_hello:
  2.     resource: "@AcmeHelloBundle/Controller/"
  3.     type: annotation
  4.     prefix: /
Tiene que tener una identación de 4 espacios, si usas tabuladores no se puede leer correctamente.
Por cierto si instalas symfony usa o la version 2.3 TLS o la versión 2.5.X;
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #18 (permalink)  
Antiguo 19/07/2014, 11:04
 
Fecha de Ingreso: febrero-2008
Mensajes: 31
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Duros inicios con Symfony 2

He reescrito el fichero routing.yml por completo tal y como indicas y el problema se ha resuelto.
No sé sé muy bien por qué, pero cuando me crea ese fichero le está metiendo tabulaciones.

Mira que haber perdido tanto tiempo con una tontería así... En fin, muchas gracias por vuestra inestimable ayuda.
Cambio el estado a SOLUCIONADO.

Etiquetas: php, symfony2
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:54.