Configuración del FrameworkBundle («framework»)

Este documento de referencia es un trabajo en progreso. Este debe ser preciso, pero aún no están cubiertas completamente todas las opciones.

El FrameworkBundle contiene la mayor parte de la funcionalidad «base» de la plataforma y se puede ajustar bajo la clave framework en la configuración de tu aplicación. Esto incluye ajustes relacionados con sesiones, traducción, formularios, validación, enrutado y mucho más.

Configurando

secret

tipo: string required

Esta es una cadena que debe ser única para tu aplicación. En la práctica, se utiliza para generar los segmentos CSRF, pero se podría utilizar en cualquier otro contexto donde una cadena única sea útil. Se convierte en el parámetro llamado kernel.secret del contenedor de servicios.

http_method_override

Nuevo en la versión 2.3: The http_method_override option is new in Symfony 2.3.

tipo: Boolean predeterminado: true

This determines whether the _method request parameter is used as the intended HTTP method on POST requests. If enabled, the Request::enableHttpMethodParameterOverride gets called automatically. It becomes the service container parameter named kernel.http_method_override. For more information, see Cómo utilizar métodos HTTP además de GET y POST en rutas.

ide

tipo: string predefinido: null

Si estás utilizando un IDE como TextMate o Vim Mac, Symfony puede convertir todas las rutas de archivo de un mensaje de excepción en un enlace, el cual abrirá el archivo en el IDE.

Si usas TextMate o Vim Mac, simplemente puedes utilizar uno de los siguientes valores integrados:

  • textmate
  • macvim

También puedes especificar una cadena personalizada como enlace al archivo. Si lo haces, debes duplicar todos los signos de porcentaje (%) para escapar ese carácter. Por ejemplo, la cadena completa de TextMate se vería así:

framework:
    ide:  "txmt://open?url=file://%%f&line=%%l"

Por supuesto, debido a que cada desarrollador utiliza un IDE diferente, es mejor poner esto a nivel del sistema. Esto se puede hacer estableciendo en php.ini el valor de xdebug.file_link_format a la cadena de enlace al archivo. Si estableces este valor de configuración, entonces no es necesario determinar la opción ide.

test

tipo: Boolean

Si este parámetro de configuración está presente (y no es false), entonces se cargará el servicio relacionado para probar tu aplicación (por ejemplo, test.client). Este valor debe estar presente en tu entorno test (por lo general a través de app/config/config_test.yml). Para más información, consulta Probando.

trusted_proxies

tipo: array

Configura la dirección IP en que se debería confiar como delegada. Para más detalles, ve Delegados confiables.

  • YAML
    framework:
        trusted_proxies:  [192.0.0.1]
    
  • XML
    <framework:config trusted-proxies="192.0.0.1">
        <!-- ... -->
    </framework>
    
  • PHP
    $container->loadFromExtension('framework', array(
        'trusted_proxies' => array('192.0.0.1'),
    ));
    

form

csrf_protection

session

gc_probability

Nuevo en la versión 2.1: La opción gc_probability es nueva en la versión 2.1

tipo: integer predeterminado: 1

Esta define la probabilidad que empiece el proceso del recolector de basura (GC por «Garbage Colector») en cada inicio de sesión. La probabilidad se calcula utilizando gc_probability / gc_divisor, p. ej. 1/100 significa que hay un 1% de posibilidad que el proceso del recolector de basura empiece en cada petición.

gc_divisor

Nuevo en la versión 2.1: La opción gc_divisor es nueva en la versión 2.1

tipo: integer predeterminado: 100

Ve gc_probability.

gc_maxlifetime

Nuevo en la versión 2.1: La opción gc_maxlifetime es nueva en la versión 2.1

tipo: integer predeterminado: 14400

Esta determina el número de segundos después de que los datos se han visto como «basura» y potencialmente limpiarlos. La recolección de basura puede ocurrir durante el inicio de sesión y depende de gc_divisor y gc_probability.

save_path

tipo: string predefinido: %kernel.cache.dir%/sessions

Esta determina el argumento a pasar al salvar el manejador. Si escoges el manejador de archivos predeterminado, esta es la ruta a dónde serán creados los archivos. You can also set this value to the save_path of your php.ini by setting the value to null:

  • YAML
    # app/config/config.yml
    framework:
        session:
            save_path: null
    
  • XML
    <!-- app/config/config.xml -->
    <framework:config>
        <framework:session save-path="null" />
    </framework:config>
    
  • PHP
    // app/config/config.php
    $container->loadFromExtension('framework', array(
        'session' => array(
            'save_path' => null,
        ),
    ));
    

serializer

enabled

tipo: boolean default: false

Whether to enable the serializer service or not in the service container.

For more details, see How to use the Serializer.

templating

assets_base_urls

predeterminado: { http: [], ssl: [] }

This option allows you to define base URLs to be used for assets referenced from http and ssl (https) pages. Puedes proporcionar un valor de cadena en vez de un arreglo de un solo elemento. If multiple base URLs are provided, Symfony2 will select one from the collection each time it generates an asset’s path.

For your convenience, assets_base_urls can be set directly with a string or array of strings, which will be automatically organized into collections of base URLs for http and https requests. Si una URL comienza con https:// o está relacionada al protocolo (es decir empieza con //) esta se debe añadir en ambas colecciones. URLs starting with http:// will only be added to the http collection.

Nuevo en la versión 2.1: A diferencia de la mayoría de los bloques de configuración, los valores sucesivos de assets_base_urls se deben sobrescribir unos a otros en lugar de fusionarse. Este comportamiento fue elegido porque los desarrolladores típicamente definen la URL base para cada entorno. Dado que la mayoría de los proyectos tienden a heredar las configuraciones (por ejemplo, config_test.yml importa config_dev.yml) y/o comparten una configuración base común (es decir, config.yml), la fusión podría generar un conjunto de URL base para múltiples entornos.

assets_version

tipo: string

Esta opción se utiliza para detener la memorización en caché de activos a nivel global añadiendo un parámetro de consulta a todas las rutas de los activos reproducidos (por ejemplo /images/logo.png?v2). Esto se aplica sólo a los activos reproducidos a través de la función asset de Twig (o su equivalente PHP), así como los activos reproducidos con Assetic.

Por ejemplo, supongamos que tienes lo siguiente:

  • Twig
    <img src="{{ asset('images/logo.png') }}" alt="Symfony!" />
    
  • PHP
    <img src="<?php echo $view['assets']->getUrl('images/logo.png') ?>" alt="Symfony!" />
    

Por omisión, esto reproducirá la ruta hacia tu imagen tal como /images/logo.png. Ahora, activa la opción assets_version:

  • YAML
    # app/config/config.yml
    framework:
        # ...
        templating: { engines: ['twig'], assets_version: v2 }
    
  • XML
    <!-- app/config/config.xml -->
    <framework:templating assets-version="v2">
        <framework:engine id="twig" />
    </framework:templating>
    
  • PHP
    // app/config/config.php
    $container->loadFromExtension('framework', array(
        ...,
        'templating'      => array(
            'engines'        => array('twig'),
            'assets_version' => 'v2',
        ),
    ));
    

Ahora, el mismo activo se reproduce como /images/logo.png?v2, Si utilizas esta función, debes incrementar manualmente el valor de assets_version antes de cada despliegue de modo que cambien los parámetros de consulta.

También puedes controlar cómo funciona la cadena de consulta a través de la opción assets_version_format.

assets_version_format

tipo: string predefinido: %%s?%%s

Esta especifica un patrón sprintf que será utilizado con la opción assets_version para construir la ruta de un activo. Por omisión, el patrón añade la versión del activo como una cadena de consulta. Por ejemplo, si assets_version_format está establecido en %%s?version=%%s y assets_version está establecida en 5, la ruta del activo sería /images/logo.png?version=5.

Nota

Todos los signos de porcentaje (%) en la cadena de formato se deben duplicar para escapar el carácter. Sin escapar, los valores se pueden interpretar inadvertidamente como Parámetros del servicio.

Truco

Algunos CDN no son compatibles con caché rota a través de cadenas de consulta, por lo que la inyección de la versión en la ruta del archivo real es necesaria. Menos mal, assets_version_format no se limita a producir cadenas de consulta versionadas.

El patrón recibe la ruta original del activo y la versión de sus parámetros primero y segundo, respectivamente. Debido a que la ruta del activo es un parámetro, no la puedes modificar en el lugar (p. ej. /images/logo-v5.png); sin embargo, puedes prefijar la ruta del activo usando un patrón de version-%%2$s/%%1$s, el cual resultará en la ruta version-5/images/logo.png.

Entonces, las reglas de reescritura de URL se podrían utilizar para ignorar el prefijo de la versión antes de servir el activo. Como alternativa, puedes copiar los activos a la ruta de la versión apropiada como parte de tu proceso de despliegue y renunciar a toda la reescritura de URL. La última opción es útil si deseas que las versiones anteriores de los activos permanezcan accesibles en la URL original.

Configuración predeterminada completa

  • YAML
    framework:
        secret:               ~
        http_method_override: true
        trusted_proxies:      []
        ide:                  ~
        test:                 ~
        default_locale:       en
    
        # configuración de formulario
        form:
            enabled:              false
        csrf_protection:
            enabled:              false
            field_name:           _token
    
        # configuración esi
        esi:
            enabled:              false
    
        # configuración de fragmentos
        fragments:
            enabled:              false
            path:                 /_fragment
    
        # configuración del perfilador
        profiler:
            enabled:              false
            only_exceptions:      false
            only_master_requests: false
            dsn:                  file:%kernel.cache_dir%/profiler
            username:
            password:
            lifetime:             86400
            matcher:
                ip:                   ~
    
                # usa el formato urldecoded
                path:                 ~ # Ejemplo: ^/ruta al recurso/
                service:              ~
    
        # configuración del enrutador
        router:
            resource:             ~ # Requerido
            type:                 ~
            http_port:            80
            https_port:           443
    
            # ponlo a true para lanzar una excepción cuando un parámetro no coincida con los requisitos
            # ponlo a false para desactivar las excepcións cuando un parámetro no coincida con los requisitos (y en su lugar devuelve null)
            # ponlo a null para desactivar el parámetro contra el cual comparar los requisitos
            # 'true' es la configuración predefinida en modo de desarrollo, mientras que 'false' o 'null' pueden ser preferibles en producción
            strict_requirements:  true
    
        # configuración de sesión
        session:
            storage_id:           session.storage.native
            handler_id:           session.handler.native_file
            name:                 ~
            cookie_lifetime:      ~
            cookie_path:          ~
            cookie_domain:        ~
            cookie_secure:        ~
            cookie_httponly:      ~
            gc_divisor:           ~
            gc_probability:       ~
            gc_maxlifetime:       ~
            save_path:            %kernel.cache_dir%/sessions
    
        # serializer configuration
        serializer:
           enabled: false
    
        # configuración de plantillas
        templating:
            assets_version:       ~
            assets_version_format:  %%s?%%s
            hinclude_default_template:  ~
            form:
                resources:
    
                    # Predefinido:
                    - FrameworkBundle:Form
            assets_base_urls:
                http:                 []
                ssl:                  []
            cache:                ~
            engines:              # Requerido
    
                # Ejemplo:
                - twig
            loaders:              []
            packages:
    
                # Prototipo
                name:
                    version:              ~
                    version_format:       %%s?%%s
                    base_urls:
                        http:                 []
                ssl:                  []
    
        # configuración del traductor
        translator:
            enabled:              false
            fallback:             en
    
        # configuración de validación
        validation:
            enabled:              false
            cache:                ~
            enable_annotations:   false
            translation_domain:   validators
    
        # configuración de anotaciones
        annotations:
            caché:                file
            file_cache_dir:       %kernel.cache_dir%/annotations
            debug:                %kernel.debug%
Bifúrcame en GitHub