1

我有一个自定义表单类型,它定义了一些默认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" ...>

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

4

1 回答 1

1

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

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $options['attr']['data-label'] = 'Logo';
    ...
于 2014-12-15T04:10:22.050 回答