Symfony 3.4 Form窗口小部件的ID之前为束名

时间:2019-04-13 23:26:36

标签: php symfony twig symfony-3.4

我在一个项目中使用Symfony 3.4,在基于与其他实体相关的实体的FormType中,并添加了基于来自其他捆绑软件中的实体的那些FormType,以获取表单集合。这里的问题是我有一个无法修改的js文件,并且此文件将监听器应用于具有特定ID“ date_campana”的输入,更具体地讲,但是当我呈现表单小部件时,系统会以捆绑名称为分配的ID前缀,结果是id =“ campanabundle_date_campana”,我需要避免对此特定字段添加前缀。

我的代码是:

CampanaType.php

->add('fecha',TextType::class,
    [
        'attr' => [
            'id'=>'campana_fecha',
            'data-start'=>2, //TODO: Parametrizable desde SystemBundle
            'class' => 'form-control',
            'data-content' => 'Seleccione el/los Productos de interés de su oferta y programe el envío de la misma en una fecha disponible <strong> Seleccione una fecha posterior a 3 días de la fecha actual.</strong>',
            'data-placement' => 'top',
            'data-trigger' => 'hover',
            'data-toggle' => 'popover',
            'data-html' => 'true',
        ]
    ]
)

new.html.twig

{{ form_widget(form.fecha, { 'attr': {'id': 'campana_fecha'}}) }}

但是,这些都不起作用,该ID仍然是开头带有campanabundle_字符串的js文件。

谢谢。

2 个答案:

答案 0 :(得分:0)

我认为您要实现的目标在Symfony 3.4中是完全不可能的,请参见https://github.com/symfony/symfony/issues/20965#issuecomment-267674782

您可以尝试使用以下方法覆盖默认的前缀ID:

public function buildView(FormView $view, FormInterface $form, array $options)
{
    $view->vars['id'] = '"date_campana';
}

请不要忘记从attr数组中删除ID。

答案 1 :(得分:0)

或者,您不能使用

之类的属性吗?

'data-id' => 'campana_fecha'

或课程

'class' => 'form-control campana_fecha'

如果您使用类,则可以在JavaScript中使用getElementsByClassName('campana_fecha')[0]代替getElementById('campana_fecha')