您的treebuilder或其一部分必須是可迭代的。所以通過讓它表示儘可能嚴格的形式,您可以使用它來輕鬆地將配置映射到構建器。這將是最容易使用的yml
格式:
form:
name: 'exampleForm'
path: 'target_path'
fields:
fieldName:
type: 'TextType'
attr:
# some additional options
otherFieldName:
type: 'TextType'
attr:
# some additional options
見的配置組件的處理部分以獲得更多信息:http://symfony.com/doc/current/components/config/definition.html#processing-configuration-values
處理後的配置則可以與形式的工廠進行處理,並可能會看起來像這個:
$config = $configuration->processConfiguration($config, FormType::class, null, $config['path']);
$formBuilder = $container->get('form.factory')->createNamedBuilder($config['name');
foreach ($config['fields'] as $field) {
$formBuilder->add($fieldName, $field['type'], $field['attr']);
}
$form = $formBuilder->createForm();
你可以使用'formBuilder'來動態構建基於'treeBuilder'輸出的表單嗎? – Rvanlaak
這怎麼可能以自動方式? –