我在一个项目中使用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文件。
谢谢。
答案 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')