Поле DateIntervalType

Дата оновлення перекладу 2025-01-15

Поле DateIntervalType

Це поле дозволяє користувачеві обрати інтервал часу. Наприклад, якщо ви хочете дозволити користувачеві вибирати, як часто він отримуватиме лист зі статусом, він може використовувати це поле для вибору інтервалів, наприклад, кожні "10 хвилин" або "3 дні".

Поле може бути відображене у різні способи (див. widget) і може бути сконфігуроване так, щоб надавати вам об'єкт DateInterval, рядок тривалості ISO 8601 (наприклад, P1DT12H) або масив (див. input).

???????? ??? ????? ???? ???? DateInterval, ?????? ??? ??????? (???. ????? input)
?????????????? ?? ???? ???????? ????, ???????? ????????? ????? ??? ????? ?????? - ???. ????? widget
???????????? ???????????? ?? ????????????? ???? ?????, ??????? ???????? ???????? ???.
???????????? ??? FormType
???? DateIntervalType

Дата оновлення перекладу 2025-02-21

Tip

Повний список опцій, визначених та успадкованих цим типом форми, доступний шляхом виконання цієї команди у вашому додатку:

1
2
# замініть 'FooType' імʼям класу вашого типу форми
$ php bin/console debug:form FooType

Базове використання

Цей тип поля дуже добре налаштовується. Найважливішими опціями є input та widget.

Ви можете сконфігурувати безліч різних опцій, зокрема який саме діапазон показувати (наприклад, не показувати "місяці", але показувати "дні"):

1
2
3
4
5
6
7
8
9
10
$builder->add('remindEvery', DateIntervalType::class, [
    'widget'      => 'integer', // відобразити текстове поле для кожної частини
    // 'input'    => 'string',  // якщо ви хочете, щоб поле повертало вам рядок ISO 8601

    // налаштуйте, які текстові поля відображаються
    'with_years'  => false,
    'with_months' => false,
    'with_days'   => true,
    'with_hours'  => true,
]);

Опції поля

days

тип: array за замовчуванням: від 0 до 31

Список днів, доступних для типу поля "дні". Ця опція актуальна лише коли опція widget має значення choice:

1
2
3
4
5
// значення, відображені користувачеві, мають діапазон від 0 до 30 (включно)
'days' => range(1, 31),

// значення, відображені користувачеві, мають діапазон від 0 до 31 (включно)
'days' => array_combine(range(1, 31), range(1, 31)),

placeholder

тип: string або array

Якщо ваш віджет встановлено як choice, то це поле буде представлено у вигляді серії полів select. Опцію placeholder можна використовувати для того, щоб додати "порожній" запис у верхній частині кожного поля вибору:

1
2
3
$builder->add('remindEvery', DateIntervalType::class, [
    'placeholder' => '',
]);

Як варіант, ви можете вказати рядок для відображення для "порожнього" значення:

1
2
3
$builder->add('remindEvery', DateIntervalType::class, [
    'placeholder' => ['years' => 'Years', 'months' => 'Months', 'days' => 'Days'],
]);

hours

тип: array за замовчуванням: від 0 до 24

Список годин, доступних для типу поля "години". Ця опція актуальна лише коли опція widget має значення choice:

1
2
3
4
5
// значення, відображені користувачеві, мають діапазон від 0 до 23 (включно)
'hours' => range(1, 24),

// значення, відображені користувачеві, мають діапазон від 0 до 24 (включно)
'hours' => array_combine(range(1, 24), range(1, 24)),

input

тип: string за замовчуванням: dateinterval

Формат даних введення - тобто формат, у якому зберігається інтервал у вашому базовому об'єкті. Допустимими значеннями є:

  • string (рядок, відформатований за стандартом ISO 8601, наприклад, P7Y6M5DT12H15M30S)
  • dateinterval (обʼєкт DateInterval)
  • array (наприклад, ['days' => '1', 'hours' => '12',])

Значення, яке повертається з форми, також буде нормалізовано назад у цей формат.

labels

тип: array за замовчуванням: (див. нижче)

Ярлики, що відображаються для кожного з елементів цього типу. Значення за замовчуванням є null, тому вони відображають "олюднену версію" дочірніх імен (Invert, Роки і т.д.):

1
2
3
4
5
6
7
8
9
10
'labels' => [
    'invert' => null,
    'years' => null,
    'months' => null,
    'weeks' => null,
    'days' => null,
    'hours' => null,
    'minutes' => null,
    'seconds' => null,
]

minutes

тип: array за замовчуванням: від 0 до 60

Список хвилин, доступних для типу поля "хвилини". Ця опція актуальна лише коли опція widget має значення choice:

1
2
3
4
5
// значення, відображені користувачеві, мають діапазон від 0 до 59 (включно)
'minutes' => range(1, 60),

// значення, відображені користувачеві, мають діапазон від 0 до 60 (включно)
'minutes' => array_combine(range(1, 60), range(1, 60)),

months

тип: array за замовчуванням: від 0 до 12

Список місяців, доступних для типу поля "місяці". Ця опція актуальна лише коли опція widget має значення choice:

1
2
3
4
5
// значення, відображені користувачеві, мають діапазон від 0 до 11 (включно)
'months' => range(1, 12),

// значення, відображені користувачеві, мають діапазон від 0 до 12 (включно)
'months' => array_combine(range(1, 12), range(1, 12)),

seconds

тип: array за замовчуванням: від 0 до 60

Список секунд, доступних для типу поля "секунди". Ця опція актуальна лише коли опція widget має значення choice:

1
2
3
4
5
// значення, відображені користувачеві, мають діапазон від 0 до 59 (включно)
'seconds' => range(1, 60),

// значення, відображені користувачеві, мають діапазон від 0 до 60 (включно)
'seconds' => array_combine(range(1, 60), range(1, 60)),

weeks

тип: array за замовчуванням: від 0 до 52

Список тижнів, доступних для типу поля "тижні". Ця опція актуальна лише коли опція widget має значення choice:

1
2
3
4
5
// значення, відображені користувачеві, мають діапазон від 0 до 51 (включно)
'weeks' => range(1, 52),

// значення, відображені користувачеві, мають діапазон від 0 до 52 (включно)
'weeks' => array_combine(range(1, 52), range(1, 52)),

widget

тип: string за замовчуванням: choice

Основний спосіб відображення цього поля. Це може бути один з наступних способів:

  • choice: відображає від одного до шести полів вибору для років, місяців, тижнів, днів, годин, хвилин та/або секунд, залежно від опцій with_years, with_months, with_weeks, with_days, with_hours, with_minutes та with_seconds. За замовчуванням: Три поля для років, місяців і днів.
  • text: відображає від одного до шести текстових полів введеня для років, місяців, тижнів, днів, годин, хвилин та/або секунд, залежно від with_years, with_months, with_weeks, with_days, with_hours, with_minutes та with_seconds варіанти. За замовчуванням: Три поля для років, місяців і днів.
  • integer: відображає від одного до шести введеня цілих чисел для років, місяців, тижнів, днів, годин, хвилин та/або секунд, залежно від опцій with_years, with_months, with_weeks, with_days, with_hours, with_minutes та with_seconds. За замовчуванням: Три поля для років, місяців і днів.
  • single_text: відображає одне введення типу text. Введення користувача буде валідовано на відповідність формі PnYnMnDTnHnMnS (або PnW, якщо використовуються тільки тижні).

with_days

тип: Boolean за замовчуванням: true

Чи включати дні у введення. Це призведе до додаткового введеня для фіксації днів.

Warning

Це не можна використовувати, якщо ввімкнено with_weeks.

with_hours

тип: Boolean за замовчуванням: false

Чи включати години у введення. Це призведе до додаткового введеня для фіксації годин.

with_invert

тип: Boolean за замовчуванням: false

Чи включати інверсію у введення. Це призведе до додаткового чекбоксу.

Це не можна використовувати, якщо опція widget встановллена як single_text.

with_minutes

тип: Boolean за замовчуванням: false

Чи включати хвилини у введення. Це призведе до додаткового введеня для фіксації хвилин.

with_months

тип: Boolean за замовчуванням: true

Чи включати місяці у введення. Це призведе до додаткового введеня для фіксації місяців.

with_seconds

тип: Boolean за замовчуванням: false

Чи включати секунди у введення. Це призведе до додаткового введеня для фіксації секунд.

with_weeks

тип: Boolean за замовчуванням: false

Чи включати тижні у введення. Це призведе до додаткового введеня для фіксації тижнів.

Warning

Це не можна використовувати, якщо ввімкнено with_days.

with_years

тип: Boolean за замовчуванням: true

Чи включати роки у введення. Це призведе до додаткового введеня для фіксації років.

years

тип: array за замовчуванням: від 0 до 100

Список років, доступних для типу поля "роки". Ця опція актуальна лише коли опція widget має значення choice:

1
2
3
4
5
// значення, відображені користувачеві, мають діапазон від 0 до 99 (включно)
'years' => range(1, 100),

// значення, відображені користувачеві, мають діапазон від 0 до 100 (включно)
'years' => array_combine(range(1, 100), range(1, 100)),

Перевизначені опції

Дата оновлення перекладу 2025-02-24

invalid_message

тип: string за замовчуванням: Це значення не є валідним значение не валидно

Це повідомлення помилки валідації, яке використовується, якщо дані, введені у це поле, не мають сенсу (тобто валідація проходить невдало).

Це може трапитися, наприклад, якщо користувач вводить у поле TimeType асбурдний рядок, який не може бути конвертований в даний час, або якщо користувач вводить рядок (наприклад, apple) у числове поле.

Нормальна (програмний код) валідація (наприклад, встановлення мінімальної довжини для поля), має бути встановлена з використанням повідомлень валідації з вашими правилами валідації (довідник ).

Успадковані опції

Ці опції наслідуються з типу form:

Дата оновлення перекладу 2025-02-21

attr

тип: array за замовчуванням: []

Якщо ви хочете додати додаткові атрибути до HTML представлення поля, то ви можете використовувати опцію attr. Це асоціативний масив із HTML-атрибутами в якості ключів. Це може бути корисно, коли вам потрібно встановити для деякого віджета користувацький клас:

1
2
3
$builder->add('body', TextareaType::class, [
    'attr' => ['class' => 'tinymce'],
]);

See also

Використовуйте опцію row_attr, якщо ви хочете додати ці атрибути до елементу рядку типу форми .

Дата оновлення перекладу 2025-01-15

data

тип: mixed за замовчуванням: За замовчуванням - поле вихідної структури.

Коли ви створюєте форму, кожне поле спочатку відображає значення відповідної властивості доменних даних форми (наприклад, якщо ви прив'язуєте об'єкт до форми). Якщо ви хочете замінити це початкове значення для форми або окремого поля,
ви можете задати його в опції даних:

1
2
3
4
5
6
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
// ...

$builder->add('token', HiddenType::class, [
    'data' => 'abcdef',
]);

Warning

Опція data завжди перевизначає значення, взяте з даних домену (об'єкта) під час відображення. Це означає, що значення об'єкта також перевизначається,
коли форма редагує вже збережений об'єкт, що призводить до втрати
збереженого значення, коли форма буде відправлена.

Дата обновления перевода 2025-02-24

disabled

тип: boolean по умолчанию: false

Если вы не хотите, чтобы пользователь изменял значение поля, то вы можете установить опцию отключения, как "true". Любые отправленные данные будут проигнорированы.

Дата оновлення перекладу 2024-05-30

help

тип: string або TranslatableInterface за замовчуванням: null

Дозволяє вам визначити повідомлення допомоги для поля форми, яке за замовчуванням відображається під полем:

1
2
3
4
5
6
7
8
9
10
11
12
13
use Symfony\Component\Translation\TranslatableMessage;

$builder
    ->add('zipCode', null, [
        'help' => 'The ZIP/Postal code for your credit card\'s billing address.',
    ])

    // ...

    ->add('status', null, [
        'help' => new TranslatableMessage('order.status', ['%order_id%' => $order->getId()], 'store'),
    ])
;

Дата оновлення перекладу 2025-02-24

help_attr

тип: array за замовчуванням: []

Встановлює HTML-атрибути для елемента, що використовується для відображення повідомлення допомоги
у полі форми. Його значенням є асоціативним масивом з іменами HTML-атрибутів в якості ключів. Ці атрибути також можуть бути встановлені в шаблоні:

1
2
3
{{ form_help(form.name, 'Your name', {
    'help_attr': {'class': 'CUSTOM_LABEL_CLASS'}
}) }}

Дата оновлення перекладу 2025-02-24

help_html

тип: boolean за замовчуванням: false

За замовчуванням, зміст опції help екранується перед відображенням у шаблоні. Встановіть для цієї опції значення true, щоб не екранувати його, що може бути корисно, якщо довідка містить HTML-елементи.

Дата оновлення перекладу 2025-01-15

inherit_data

тип: boolean за замовчуванням: false

Ця опція визначає, чи буде форма успадковувати дані з батьківської форми. Це може бути корисно, якщо у вас є набір полів, які дублюються у декількох формах. Дивіться Як зменшити дублювання коду за допомогою "inherit_data".

Warning

Коли для поля встановлено опцію inherit_data, воно використовує дані батьківської форми як є. Це означає, що Перетворювачі даних не
будуть застосовуватися до цього поля.

Дата оновлення перекладу 2025-02-24

invalid_message_parameters

тип: array за замовчуванням: []

При встановленні опції invalid_message вам може знадобитися включити в рядок деякі змінні. Це можна зробити, додавши заповнювачі в цю опцію, та включивши змінні в цій опції:

1
2
3
4
$builder->add('someField', SomeFormType::class, [
    // ...
    'invalid_message' => 'Ви ввели невалідне значення, воно має містити %num% літер',
    'invalid_message_parameters' => ['%num%' => 6],

Дата оновлення перекладу 2025-02-24

mapped

тип: boolean за замовчуванням: true

Якщо ви хочете, щоб поле було проігноровано при читанні або записі в нього обʼєкта, ви можете встановити опцію mapped як false.

Дата оновлення перекладу 2025-02-24

row_attr

тип: array за замовчуванням: []

Асоціативний масив атрибутів HTML, що додаються до елементу, який використовується для відображення рядка типу форми :

1
2
3
$builder->add('body', TextareaType::class, [
    'row_attr' => ['class' => 'text-editor', 'id' => '...'],
]);

See also

Використовуйте опцію attr, якщо ви хочете додати ці атрибути до елементу віджета типу форми .

Змінні поля

?????? ??? ????????????
widget mixed ???????? ????? widget.
with_days Boolean ???????? ????? with_days.
with_invert Boolean ???????? ????? with_invert.
with_hours Boolean ???????? ????? with_hours.
with_minutes Boolean ???????? ????? with_minutes.
with_months Boolean ???????? ????? with_months.
with_seconds Boolean ???????? ????? with_seconds.
with_weeks Boolean ???????? ????? with_weeks.
with_years Boolean ???????? ????? with_years.