Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Usando ladybug en aplicaciones Silex

20 de octubre de 2014

Buenas tardes, estoy intentando añadir a mi primer proyecto en Silex el bundle ladybug pero no lo consigo. He añadido otros bundles de la misma manera pero este me da error, espero me puedan ayudar, gracias.

Estoy usando el skeleton de fabpot.

1. composer.json:

"raulfraile/ladybug-bundle": "~1.0"

2. composer update

3. app.php:

use RaulFraile\Bundle\LadybugBundle\RaulFraileLadybugBundle;
$app->register(new RaulFraileLadybugBundle());

Me da el siguiente error:

ContextErrorException: Catchable Fatal Error: Argument 1 passed to
Silex\Application::register() must implement interface
Silex\ServiceProviderInterface, instance of
RaulFraile\Bundle\LadybugBundle\RaulFraileLadybugBundle given, called in 
/var/www/html/blog/src/app.php on line 24 and defined in 
/var/www/html/blog/vendor/silex/silex/src/Silex/Application.php line 165

Respuestas

#1

La causa del error es que los bundles de Symfony no se pueden utilizar libremente en aplicaciones Silex. En Silex usamos los service providers y en Symfony los bundles. Auque en teoría son similares, en la práctica son totalmente diferentes.

Es cierto que en las aplicaciones Silex puedes instalar algunos bundles de Symfony y aprovechar el código de sus librerías creando tus propios service providers. Pero es algo que no te aconsejo hacer porque a la larga da más problemas de los que soluciona.

Lo que te aconsejo es que busques si existe algún service provider para integrar la librería que te interesa (en este caso, Ladybug). Y si no existe, que lo crees tu mismo porque es bastante fácil hacerlo si te fijas en el código de otros service providers.

Para Silex sí que puedes encontrar un service provider ya creado en github.com/bangpound/ladybug-silex-provider.

@javiereguiluz

20 octubre 2014, 17:49