DateType Поле только месяц и год Symfony 5 - PullRequest
0 голосов
/ 18 июня 2020

Я хочу, чтобы в моем поле DateType в форме отображались только месяц и год. Я много чего пробовал, но это не работает.

$form = $this->createFormBuilder()

            ->add('date',  DateType::class, [
                'required' => true,
            ])
            ->getForm();

Знаешь, как я могу этого добиться?

Изменить: вот мой шаблон веточки

{{ form_start(form) }}
                <div class="form-row align-items-end">
                    <div class="col">
                        {{ form_row(form.company) }}
                    </div>
                    <div class="col">
                        {{ form_row(form.date) }}
                    </div>
                    <div class="col">
                        <div class="form-group">
                            <button class="btn btn-primary">{% trans %}Search{% endtrans %}</button>
                        </div>
                    </div>
                </div>
{{ form_end(form) }}

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Я бы сделал то, что рекомендует делать symfony do c:

$builder->add('date', DateType::class, [
    // renders it as a single text box
    'widget' => 'single_text',
]);

Затем в шаблоне веточки вы можете стилизовать ввод, как хотите. Например, скройте его и создайте 2 поля выбора, которые переопределят входное значение с помощью события изменения

<select id="month">
... options
</select>

<select id="year">
...options
</select>

<script>
const monthSelect = document.querySelector('#month');
const yearSelect = document.querySelector('#year');
monthSelect.addEventListener('change', () => { here override month in your single text }
yearSelect.addEventListener('change', () => { here override year in your single text }
</script>

И здесь вы go, полностью настраиваемое средство выбора даты и времени

0 голосов
/ 18 июня 2020

У меня была такая же проблема. Вы не сможете удалить день в PHP или Twig, потому что он нужен объекту DateTime

Я предлагаю вам скрыть его в css. Например, мне пришлось скрыть год в форме:

#statistic_search_start_day {
    display: none;
}

Затем вы можете настроить недостающее поле в PHP (событие формы или контроллер)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...