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.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow