Как заставить attr html5 в false в Symfony FormType - PullRequest
1 голос
/ 11 апреля 2020

Я пытаюсь разобраться между Symfony 5 и Tempus Dominus Bootstrap4 Datetimepicker. Моя форма ввода Datetime работает только с функцией обновления, когда событие существует. Я хочу передать атрибут в мою форму, но, похоже, он не работает.

У меня есть этот строитель:

    $builder->add('date', DateTimeType::class, [
            'required' => true,
            'widget' => 'single_text',
            'attr' => [
                'html5' => false,
                'placeholder' => 'Date',
                'class' => 'form-control datetimepicker-input',
                'data-target' => '#datetimepicker1'
            ],
        ]);

Мой шаблон:

            <div class="row row-datetime">
                <div class="input-group date col" id="datetimepicker1" data-target-input="nearest">
                    {{ form_widget(form.date, {'html5':false } ) }}
                    <div class="input-group-append" data-target="#datetimepicker1" data-toggle="datetimepicker">
                        <div class="input-group-text datetimepicker-button">
                            <i class="fa fa-clock"></i>
                        </div>
                    </div>
                </div>
            </div>

{% block javascripts %}
    {{parent()}}
    <script>
        $('#datetimepicker1').datepicker({
            format: 'dd.MM.yyyy',
            });
    </script>
{% endblock %}

Но результат неожиданный, Chrome возвращает мой тип ввода как «datetime-local».

В другом шаблоне для редактирования существующего события у меня есть этот код, без form_widget:

            <div class="row row-datetime">
                <div class="input-group date col" id="datetimepicker1" data-target-input="nearest">
                    <input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker1"/>
                    <div class="input-group-append" data-target="#datetimepicker1" data-toggle="datetimepicker">
                        <div class="input-group-text datetimepicker-button">
                            <i class="fa fa-clock"></i>
                        </div>
                    </div>
                </div>
            </div>

И это работает как прелесть, которую я не понимаю ... Если я попробую этот код в моем первом шаблоне, Twig создаст два ввода даты и времени. Один с указателем даты и времени, другой с классом c datetime.

Я действительно не понимаю.

Может кто-нибудь помочь мне с этим, пожалуйста?

Спасибо.

Best,

Py

1 Ответ

0 голосов
/ 25 апреля 2020

Измените свой конструктор следующим образом:

$builder->add('date', DateTimeType::class, [
        'required' => true,
        'widget' => 'single_text',
        'attr' => [
            'placeholder' => 'Date',
            'class' => 'datetimepicker-input',
            'data-target' => '#datetimepicker1'
        ],
        'html5' => false,
    ]);

Обратите внимание, что спецификация html5 не go в массиве attr. Также обратите внимание, что вам не нужно добавлять класс form-control, так как symfony сделает это самостоятельно, где это необходимо.

...