Symfony 3.4 Форма виджета префикс идентификатора с именем пакета - PullRequest
1 голос
/ 14 апреля 2019

Я использую Symfony 3.4 для проекта, в FormType, основанном на сущности, которая связана с другими сущностями, и эти FormTypes, основанные на сущностях из других пакетов, добавляются для получения коллекции форм. Проблема здесь в том, что у меня есть файл js, который я не могу изменить, и этот файл применяет слушатель к входу с определенным идентификатором, «date_campana», чтобы быть более конкретным, но когда я рендерим виджет формы, Системный префикс назначенного идентификатора с именем Bundle, в результате 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'}}) }}

Но ничего из этого не работает, идентификатор все еще содержит префикс с campanabundle_ строкой, ломающей файл js.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 14 апреля 2019

Или же вы не можете использовать такой атрибут, как

'data-id' => 'campana_fecha'

или класс

'class' => 'form-control campana_fecha'?

Если вы используете класс, то вы можете использовать getElementsByClassName('campana_fecha')[0] вместо getElementById('campana_fecha') в javascript

0 голосов
/ 14 апреля 2019

Я не думаю, что то, что вы пытаетесь достичь, возможно в Symfony 3.4, см. Здесь https://github.com/symfony/symfony/issues/20965#issuecomment-267674782.

Вы можете попробовать переопределить префиксный идентификатор по умолчанию с помощью:

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

Не забудьте затем удалить идентификатор из массива attr.

...