在运行时更改字段属性

塞尔克斯

假设我们有一个在表单生成器中定义的表单,如下所示:

    $builder
        ->add('username', 'text', ['disabled' => false]);

我们可以改变属性disabled一个的form.username领域后$form实例创建?

我发现您可以使用

$formBuilder->get('username')->getAttributes('data_collector/passed_options')['data_collector/passed_options']

然后用setAttributes相应的替换

但是它看起来很脏。

我发现的另一种替代方法是$formBuilder->remove并将->add()元素返回。这也是丑陋的。

那么,是否有任何适当的设置方法?

场景:先构建表单,然后进行验证,以防万一无效,我需要将字段标记为禁用并再次呈现。

b.b3rn4rd

这是一个简化的示例,它演示了如何使用动态表单元素进行操作,默认情况下,名称字段是禁用的,并且仅在提供成员编号时才启用:

class ExampleType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('member_number', 'integer', array(
                'required' => false
            ));

        $f = function(FormEvent $event) {
            $form = $event->getForm();
            $data = $event->getData();
            $attr = array('disabled' => true);


            if (isset($data) && $data['member_number']) {
                unset($attr['disabled']);
            }

            $form->add('name', 'text', $attr);

        };
        $builder->addEventListener(FormEvents::PRE_SET_DATA, $f);
        $builder->addEventListener(FormEvents::PRE_SUBMIT, $f);        
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在运行时更改persistenceUnit属性

来自分类Dev

在运行时更改.NET属性网格只读属性

来自分类Dev

在运行时更改.NET属性网格只读属性

来自分类Dev

InnoSetup,在运行时更改Uninstallable属性的行为?

来自分类Dev

在运行时更改PropertyGrid的描述和类别属性

来自分类Dev

在运行时更改VB6单元属性?

来自分类Dev

在运行时jQuery上更改ID属性

来自分类Dev

在运行时更改视图属性的正确方法

来自分类Dev

在运行时更改属性文件中的值

来自分类Dev

如何在运行时更改 styleSheet 属性?

来自分类Dev

在运行时创建字段

来自分类Dev

在运行时修改GraphQLObjectType字段

来自分类Dev

在运行时更改LSApplicationQueriesSchemes

来自分类Dev

Selenium xpath在运行时被更改

来自分类Dev

在运行时更改引导间隔

来自分类Dev

在运行时更改python mro

来自分类Dev

在运行时更改宏的值

来自分类Dev

可以在运行时更改AppDelegate

来自分类Dev

在运行时更改Java类

来自分类Dev

在运行时更改Guice绑定

来自分类Dev

在运行时更改.dll

来自分类Dev

在运行时更改堆栈大小

来自分类Dev

在运行时更改MPI设置

来自分类Dev

在运行时更改构建变体

来自分类Dev

在运行时更改注入的对象

来自分类Dev

在运行时更改网络接口

来自分类Dev

在运行时更改CoreNLP设置

来自分类Dev

在运行时更改按钮框架

来自分类Dev

在运行时更改按钮框架