您的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
这怎么可能以自动方式? –