【问题标题】:Default Options for symfony 2 forms are being overridden not mergedsymfony 2 表单的默认选项被覆盖而不是合并
【发布时间】:2014-12-11 20:09:17
【问题描述】:

我有一个自定义表单类型,它定义了一些默认的attr 选项:

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'invalid_message' => 'The selected image does not exist',
        'attr'=>array(
            'data-image-picker'=>'true',
            'data-label'=>'Pick Image'
        ),
    ));
}

但是,当我使用此自定义表单类型时,整个 attr 数组将替换为定义的内容。

$builder->add('logo','image_picker',array(
    'attr'=>array(
        'data-label'=>'Logo'
     ),
 ));

当表单被渲染时,它只有<input data-label="Logo" ...>

我如何获得它以便这些选项将被合并而不是完全覆盖?

【问题讨论】:

  • 这是预期行为,因为您覆盖了 attr 选项的默认值,而不是其中的元素。

标签: php symfony symfony-forms symfony-2.6


【解决方案1】:

您可以在 options 数组中找到它们,该数组作为第二个参数传递给您的自定义类型的 buildForm 方法。你会想做这样的事情:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $options['attr']['data-label'] = 'Logo';
    ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    • 2019-05-30
    • 1970-01-01
    相关资源
    最近更新 更多