我想要帮助.我有一个带下拉列表的表单,我需要根据外部输入修改选项.我想它应该适用于eventListener
$builder->addEventListener(
FormEvents::PRE_SET_DATA,
function(FormEvent $event) use($input){
$form = $event->getForm();
// get existin form child
// modify list of choices
}
Run Code Online (Sandbox Code Playgroud)
我见过的所有示例都只使用FormEvents添加新字段,但我需要修改现有字段,但我不知道如何访问它.
感谢帮助
iva*_*cus 24
虽然最初的问题相当陈旧,但是让我把它留在这里,以防其他人遇到需要更改字段的特定选项而无需再次复制所有选项的情况:
<?php
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
$form = $event->getForm();
// Get configuration & options of specific field
$config = $form->get('field_to_update')->getConfig();
$options = $config->getOptions();
$form->add(
// Replace original field...
'field_to_update',
$config->getType()->getName(),
// while keeping the original options...
array_replace(
$options,
[
// replacing specific ones
'required' => false,
]
)
);
});
Run Code Online (Sandbox Code Playgroud)
资料来源:https://github.com/symfony/symfony/issues/8513#issuecomment-21868035
这里有一篇博客文章,通过实体关系的整个动态形式进行工作:http://aumatic.16mb.com/wordpress/2011/08/symfony2-dynamic-forms-an-event-driven-approach/
Symfony 网站也有大部分记录,您只需要编写 ajax 代码和相应的控制器方法,这在上面的博客文章中完成: http ://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html
| 归档时间: |
|
| 查看次数: |
11240 次 |
| 最近记录: |