Fondamentalmente Vorrei consentire un arbitrario (ma non vuoto) Numero di coppie di valori-chiave nella mia configurazione, sotto billings
nodo, cioè definire un array associativo.Consentire coppie di valori-chiave in configurazione semantica Symfony 2 Fascio
ho questo nel mio Configurator.php
(parte di):
->arrayNode('billings')
->isRequired()
->requiresAtLeastOneElement()
->prototype('scalar')
->end()
->end()
E poi, a mio config.yml
:
my_bundle:
billings:
monthly : Monthly
bimonthly : Bimonthly
Tuttavia, l'output $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();
}
}
. .. quello che ottengo è indice di serie per numero, non un associativa uno:
'billings' =>
array (size=2)
0 => string 'Monthly' (length=7)
1 => string 'Bimonthly' (length=9)
Per curiosità (e se questo può aiutare), sto cercando di iniettare questo array come parametro di servizio (le annotazioni di questo gran fascio: 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;
}
}
Grazie, sto dando una prova e riferire! – gremo
Cosa fare se si desidera evitare 'isRequired' e fornire una matrice predefinita in caso di null? –
Sto correggendo che in '-> useAttributeAsKey ('name')' il 'name' ha un significato speciale o è almeno automaticamente aggiunto all'array? – martin