Buscar..
Introducción
Ejemplos y buenas prácticas para configurar su aplicación Symfony que no están en la documentación oficial.
Incluir todos los archivos de configuración de un directorio
Después de un tiempo, terminas con muchos elementos de configuración en tu config.yml. Puede hacer que su configuración sea más fácil de leer si divide su configuración en varios archivos. Puede incluir fácilmente todos los archivos de un directorio de esta manera:
config.yml:
imports:
- { resource: parameters.yml }
- { resource: "includes/" }
En la includes
directorio se puede poner por ejemplo doctrine.yml, swiftmailer.yml, etc.
Utilice el nombre de clase completo (FQCN) como ID de servicio
En muchos ejemplos, encontrará un ID de servicio como 'acme.demo.service.id' (una cadena con puntos). Usted services.yml
se verá así:
services:
acme.demo.service.id:
class: Acme\DemoBundle\Services\DemoService
arguments: ["@doctrine.orm.default_entity_manager", "@cache"]
En su controlador, puede utilizar este servicio:
$service = $this->get('acme.demo.service.id');
Si bien no hay ningún problema con esto, puede usar un Nombre de clase totalmente calificado (FQCN) como ID de servicio:
services:
Acme\DemoBundle\Services\DemoService:
class: Acme\DemoBundle\Services\DemoService
arguments: ["@doctrine.orm.default_entity_manager", "@cache"]
En tu controlador puedes usarlo así:
use Acme\DemoBundle\Services\DemoService;
// ..
$this->get(DemoService::class);
Esto hace que su código sea mejor para entender. En muchos casos, no tiene sentido tener un ID de servicio que no sea solo el nombre de la clase.
A partir de Symfony 3.3, incluso puedes eliminar el atributo de class
si tu ID de servicio es un FQCN.
No se necesita interfaz HTTP?
Si su aplicación no necesita ninguna interfaz HTTP (por ejemplo, solo para una aplicación de consola), deseará deshabilitar al menos Twig
y SensioFrameworkExtra
Solo comenta esas líneas:
app / AppKernel.php
$bundles = [
//...
// new Symfony\Bundle\TwigBundle\TwigBundle(),
// new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
//...
if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {
//...
// $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
app / config / config.yml
framework:
# ...
# router:
# resource: '%kernel.root_dir%/config/routing.yml'
# strict_requirements: ~
# ...
# templating:
# engines: ['twig']
#...
#twig:
# debug: '%kernel.debug%'
# strict_variables: '%kernel.debug%'
app / config / config_dev.yml
#framework:
# router:
# resource: '%kernel.root_dir%/config/routing_dev.yml'
# strict_requirements: true
# profiler: { only_exceptions: false }
#web_profiler:
# toolbar: true
# intercept_redirects: false
También puede eliminar los requisitos de proveedores relacionados de composer.json :
"sensio/framework-extra-bundle": "x.x.x",
"twig/twig": "x.x"
El uso de Symfony en todos los casos es discutible, pero al menos puede ser temporal.