Básicamente me gustaría permitir a un arbitrario (pero no vacío) número de pares de valores clave en mi configuración, bajo billings
nodo, es decir definir una array asociativo.Permitir pares de valores clave en la configuración semántica Symfony 2 Bundle
tengo esto en mi Configurator.php
(parte de):
->arrayNode('billings')
->isRequired()
->requiresAtLeastOneElement()
->prototype('scalar')
->end()
->end()
Y luego, en mi config.yml
:
my_bundle:
billings:
monthly : Monthly
bimonthly : Bimonthly
Sin embargo, la salida de $config
:
class MyBundleExtension extends Extension
{
/**
* {@inheritDoc}
*/
public function load(array $configs, ContainerBuilder $container)
{
$loader = new Loader\YamlFileLoader($container,
new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yml');
$processor = new Processor();
$configuration = new Configuration();
$config = $processor->processConfiguration($configuration, $configs);
$container->setParameter('my_bundle.billings', $config['billings']);
var_dump($config);
die();
}
}
. .. lo que obtengo es índice de matriz por números, no un uno asociativa:
'billings' =>
array (size=2)
0 => string 'Monthly' (length=7)
1 => string 'Bimonthly' (length=9)
Por curiosidad (y si esto puede ayudar), estoy tratando de inyectar esta matriz como un parámetro de servicio (anotaciones de este gran paquete: JMSDiExtraBundle):
class BillingType extends \Symfony\Component\Form\AbstractType
{
/**
* @var array
*/
private $billingChoices;
/**
* @InjectParams({"billingChoices" = @Inject("%billings%")})
*
* @param array $billingChoices
*/
public function __construct(array $billingChoices)
{
$this->billingChoices = $billingChoices;
}
}
Gracias, lo que estoy dando una oportunidad y reportar de vuelta! – gremo
¿Qué ocurre si quiero evitar 'isRequired' y proporcionar una matriz predeterminada en caso de nulo? –
¿Estoy correcto que en '-> useAttributeAsKey ('name')' el 'nombre' tiene un significado especial o al menos se agrega automáticamente a la matriz? – martin