2012-02-15 13 views
8

Me pregunto dónde puedo obtener más información acerca de la sintaxis especial como @somevar o %somevar% en la configuración yaml de symfony2?Symfony 2 matrices de paso YAML

Por ejemplo, el uso de @ define una llamada a un servicio, que es cómo se pasa dependencias de servicios. %somevar% por otra parte se refiere al valor de un parámetro ya definido con el nombre somevar.

Por lo tanto, si lo hago:

parameters: 
    custom: "some value" 
    another: %custom% 

continuación another se rellenará con el valor de custom, que en mi caso es "un valor". Mi pregunta es, ¿dónde están documentadas estas relaciones?

Mi necesidad particular es poder hacer referencia a un elemento de una matriz, algo así como %somevar[somekey]%, pero esa sintaxis no funciona.

¡Gracias de antemano!

EDIT: He encontrado esto: Full merge key support. Full support for references, aliases, and full merge key. Don't repeat yourself by referencing common configuration bits.

en los documentos YAML, pero no hay documentación furthur sobre esto ..

Respuesta

0

Lo que usted está buscando no es realmente sobre sí Yaml, sino sobre el cargador de Yaml el contenedor de Inyección de Dependencia.

Si busca documentos sobre él, aquí son los que para el componente de edad (v1): http://components.symfony-project.org/dependency-injection/trunk/book/05-Service-Description

Symfony2 viene con un nuevo componente (basado en los mismos principios). Puede encontrar los documentos oficiales aquí: http://symfony.com/doc/current/book/service_container.html#service-parameters

En cuanto a su problema, no puede acceder a las claves de los parámetros DI, debe aplanarlas manualmente.

Puede usar una extensión DI para satisfacer sus necesidades, tome ejemplo en algunos paquetes como: https://github.com/symfony/AsseticBundle/blob/master/DependencyInjection/AsseticExtension.php#L54 (tal vez no sea el mejor ejemplo).

+0

Gracias, bueno en realidad sólo necesitaba hacer referencia a los parámetros dentro de otros parámetros, para evitar la duplicación. Entonces, ni siquiera depende de la DI. Descubrí que los alias de YAML podrían hacer el truco, sólo tengo que etiquetar las entradas que necesito y luego hacer referencia a ellos como se muestra aquí: http://code.google.com/p/snakeyaml/wiki/Documentation#Aliases No es tan flexible como esperaba, pero hará el truco. ¡Gracias de cualquier manera! –