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

Extender controlador $app['resolver']

5 de septiembre de 2015

Buenas!

Estoy intentando conseguir con Silex modificar la llamada del controlador para tener como así decirlo un controlador base y poder controlar todos los controladores. Bien, pues encontré esto https://gist.github.com/kix/3897241 y funciona a la perfección, es bastante interesante.

Pero el caso cuando entro en modo dev en mi applicación donde aparece el debugbar y demás me salta el siguiente fallo "You must enable the ServiceController service provider to be able to use the WebProfiler". Si quito el debugbar esto funciona.

Estoy utilizando Silex skeleton de Fabien, he probado con librerías silex "dev" y estables, incluso varias versiones de Symfony, pero todas me dan el mismo error. Si quereis os subo una aplicación pequeña poniéndolo a prueba para que podáis verlo mejor.

Muchísimas gracias!


Respuestas

#1

El error que mencionas parece que se lanza mediante el siguiente código definido en este método del WebProfilerServiceProvider:

if (!$app['resolver'] instanceof ServiceControllerResolver) {
    throw new \LogicException('You must enable the ServiceController service provider to be able to use the WebProfiler.');
}

Como ves, la solución es hacer que $app['resolver'] sea una instancia de ServiceControllerResolver (por lo que debe instancias o extender de esa clase).

Por otra parte, el "gist" que has lanzado se creó hace 3 años, por lo que no se cuál es su validez para las aplicaciones Silex modernas. Personalmente creo que con el ControllerResolver que te proporciona Silex puedes ordenar muy bien los controladores de la aplicación y utilizarlos casi como en Symfony. Por si te sirve de ayuda, hace un tiempo publicamos un tutorial sobre Cómo organizar bien un proyecto Silex.

@javiereguiluz

5 septiembre 2015, 17:13