Поле TimeType
Дата оновлення перекладу 2025-01-15
Поле TimeType
Поле для визначення введення часу.
Може бути відображене як текстове поле, ряд текстових полів (наприклад, година,
хвилина, секунда) або ряд полів вибору. Основні дані можуть зберігатися як обʼєкт
DateTime
, рядок, часова відмітка або масив.
??????? ???? | ???? ???? DateTime , ??????, ??????? ????????? ??? ???????
(???. ????? input ) |
?????????????? ?? | ???? ???? ??????? ?????? (???. ?????) |
???????????? ???????????? ?? ????????????? | ???? ?????, ??????? ???????? ???. |
???????????? ??? | FormType |
???? | TimeType |
Дата оновлення перекладу 2025-02-21
Tip
Повний список опцій, визначених та успадкованих цим типом форми, доступний шляхом виконання цієї команди у вашому додатку:
1 2
# замініть 'FooType' імʼям класу вашого типу форми
$ php bin/console debug:form FooType
Базове застосування
Цей тип поля є висококонфігурованим, але простим у використання. Найважливіші опції
- input
і widget
.
Уявіть, що у вас є поле startTime
, основні дані часу якого - обʼєкт DateTime
.
Наступне конфігурує TimeType
для цього поля у вигляді двох різних полів вибору:
1 2 3 4 5 6 7
use Symfony\Component\Form\Extension\Core\Type\TimeType;
// ...
$builder->add('startTime', TimeType::class, [
'input' => 'datetime',
'widget' => 'choice',
]);
Опція input
повинна бути змінена так, щоб співпадати з типом основних даних дати.
Наприклад, якщо дані поля startTime
були часовою відміткою unix, то вам потрібно
встановити input
як timestamp
:
1 2 3 4 5 6 7
use Symfony\Component\Form\Extension\Core\Type\TimeType;
// ...
$builder->add('startTime', TimeType::class, [
'input' => 'timestamp',
'widget' => 'choice',
]);
Поле також підтримує array
і string
як валідні значення опції input
.
Опції поля
Дата оновлення перекладу 2022-12-21
Ця опція визначає, чи мають значення виборів бути перекладені та у якому домені перекладів.
Значення опції choice_translation_domain
можуть бути true
(повторно використати
поточний домен перекладів), false
(відключити переклад), null
(використовує
батьківський домен перекладів або домен за замовчуванням) або рядок, який представляє
точний домен перекладів для використання.
placeholder
тип: string
| array
Якщо ваша опція віджету встановлена як choice
, то це поле буде представлене у
вигляді ряду полів вибору select
. Якщо значення заповнювача буде рядком, то воно
буде використано як порожнє значення всіх полів вибору:
1 2 3
$builder->add('startTime', 'time', array(
'placeholder' => 'Select a value',
));
Як варіант, ви можете використати масив, який конфігурує різні значення заповнювача для полів годин, хвилин та секунд:
1 2 3 4 5
$builder->add('startTime', TimeType::class, [
'placeholder' => [
'hour' => 'Hour', 'minute' => 'Minute', 'second' => 'Second',
],
]);
See also
Дивіться опцію with_seconds, щоб дізнатися, як увімкнути секунди в типі форми.
Дата оновлення перекладу 2025-02-24
hours
тип: array
за замовчуванням: від 0 до 23
Список годин, доступни в типі поля години. Ця опція застосовується лише тоді, коли
опція widget
встановлена як choice
.
Дата оновлення перекладу 2025-02-24
html5
тип: boolean
за замовчуванням: true
Якщо встановлено як true
(за замовчуванням), то вона буде використовувати тип HTML5
(дату, час або datetime), щоб відобразити поле. Якщо встановлена як false
,
то буде використано текстовий тип.
Це корисно, коли ви хочете використовувати користувацький вибірник даних JavaScript, який часто вимагає текстовий тип замість типу HTML5.
input
тип: string
за замовчуванням: datetime
Формат даних введення - тобто, формат, в якому зберігаються дані у вашому основному обʼєкті. Валідні значення:
string
(наприклад,12:17:26
)datetime
(обʼєктDateTime
)datetime_immutable
(обʼєктDateTimeImmutable
)array
(наприклад,array('hour' => 12, 'minute' => 17, 'second' => 26)
)timestamp
(наприклад,1307232000
)
Значення, яке повертається з форми, також буде нормалізовано назад у цей формат.
input_format
тип: string
за замовчуванням: H:i:s
Якщо опція input
встановлена як string
, ця опція вказує формат часу. Це має бути
валідним форматом часу PHP.
Дата оновлення перекладу 2025-02-24
minutes
тип: array
за замовчуванням: від 0 до 59
Список хвилин, доступних в типі поля хвилини. Ця опція застосовується лише тоді,
коли опція widget
встановлена як choice
.
Дата оновлення перекладу 2024-05-30
model_timezone
тип: string
за замовчуванням: часовий пояс системи за замовчуванням
Часовий пояс, в якому зберігаються вхідні дані. Це має бути один з часових поясів підтримуваних PHP.
Warning
При використанні різних значень для model_timezone
та view_timezone,
має бути сконфігуровано reference_date.
reference_date
тип: DateTimeInterface
за замовчуванням: null
Конфігурація дати довідкової дати обовʼязкова коли model_timezone та view_timezone відрізняються. Конверсії часового поясу будуть обчислені, засновуючись на цій даті.
Дата оновлення перекладу 2025-02-24
seconds
тип: array
за замовчуванням: від 0 до 59
Список секунд, доступних в типі поля секунд. Ця опція застосовується лише тоді,
коли опція widget
встановлена як choice
.
Дата оновлення перекладу 2025-02-22
view_timezone
тип: string
за замовчуванням: часовий пояс системи за замовчуванням
Часовий пояс для відображення даних користувачу (а, відповідно, і даних, які користувач відправляє). Це має бути один з часових поясів, що підтримуються PHP.
Коли не встановлено reference_date, view_timezone
за замовчуванням має
значення, сконфігуроване в model_timezone.
Warning
При використанні різних значень для model_timezone та view_timezone
,
має бути сконфігуровано reference_date.
widget
тип: string
за замовчуванням: choice
Базовий спосіб, яким повинно бути відображене поле. Може бути одним з наступного:
choice
: відображає один, два (за замовчуванням) або три введення вибору (година, хвилина, секунда), в залежності від опцій with_minutes та with_seconds.text
: відображає один, два (за замовчуванням) або три текстових введення (година, хвилина, секунда), в залежності від опцій with_minutes та with_seconds.single_text
: відображає один тип введенняtime
. Введення користувача буде валідовано формоюhh:mm
(абоhh:mm:ss
, якщо використовуються секунди).
Warning
Комбінування типу віджету single_text
та опції with_minutes, встановленої
як false
, може викликати неочікувану поведінку у клієнті, так як тип введення
time
може не підтримувати вибір лише години.
Дата оновлення перекладу 2025-02-22
with_minutes
тип: boolean
за замовчуванням: true
Чи додавити хвилини у введення. Призведе до додаткового введення для фіксації хвилин.
Дата оновлення перекладу 2025-02-22
with_seconds
тип: boolean
за замовчуванням: false
Чи додавати секунди у введення. Призведе до додаткового введення для фіксації секунд.
Перевизначені опції
by_reference
за замовчуванням: false
Класи DateTime
розглядаються як незмінні обʼєкти.
Дата оновлення перекладу 2025-02-22
compound
тип: boolean
за замовчуванням: false
Ця опція вказує, чи містить тип дочірні типи. Ця опція управляється внутрішньо для вбудованих типів, так що нема необхідності конфігурувати її явно.
Дата оновлення перекладу 2025-02-22
data_class
тип: string
за замовчуванням: null
Внутрішнє нормалізоване представлення цього типу - масив, а не обʼєкт \DateTime
.
Отже, опція data_class
ініціалізується як null
, щоб уникнути ініціалізації
обʼєктом FormType
як \DateTime
.
invalid_message
тип: string
за замовчуванням: Це значення не є валідним значение не валидно
Це повідомлення помилки валідації, яке використовується, якщо дані, введені у це поле, не мають сенсу (тобто валідація проходить невдало).
Це може трапитися, наприклад, якщо користувач вводить у поле
TimeType асбурдний рядок, який
не може бути конвертований в даний час, або якщо користувач вводить
рядок (наприклад, apple
) у числове поле.
Нормальна (програмний код) валідація (наприклад, встановлення мінімальної довжини для поля), має бути встановлена з використанням повідомлень валідації з вашими правилами валідації (довідник ).
Успадковані опції
Ці опції наслідуються з FormType:
Дата оновлення перекладу 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
error_mapping
тип: array
за замовчуванням: []
Ця опція дозволяє вам змінювати ціль помилки валідації.
Уявіть, що у вас є користувацький метод з назвою matchingCityAndZipCode()
,
який валідує чи співпадають місто та поштовий індекс. На жаль, у вашій формі
немає поля matchingCityAndZipCode
, тому все, що може зробити Symfony, це
відобразити помилку у верхній частині форми.
За допомогою кастомізованого мапування помилок ви можете зробити краще: співставити помилку з полем міста так, щоб воно відображалося над ним:
1 2 3 4 5 6 7 8
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'error_mapping' => [
'matchingCityAndZipCode' => 'city',
],
]);
}
Ось правила для лівої та правої частини мапування:
- Ліва частина містить шляхи властивостей;
- Якщо порушення генерується у властивості або методі класу, то його
шлях - це
propertyName
; - Якщо порушення згенеровано в елементі об'єкту
array
абоArrayAccess
, то шлях до нього -[indexName]
; - Ви можете створювати вкладені шляхи властивостей шляхом їх конкатенації, розділяючи
властивості крапками. Наприклад:
addresses[work].matchingCityAndZipCode
; - Права частина містить назви полів форми.
За замовчуванням, помилки для будь-якої властивості, яка не мапована, будуть
спливати в батьківську форму. Ви можете використовувати крапку (.
) зліва,
щоб співставити помилки всіх неспівставлених властивостей до певного поля.
Наприклад, щоб мапувати всі ці помилки до поля city
, використовуйте:
1 2 3 4 5
$resolver->setDefaults([
'error_mapping' => [
'.' => 'city',
],
]);
Дата оновлення перекладу 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_minutes | boolean |
???????? ????? with_minutes. |
with_seconds | boolean |
???????? ????? with_seconds. |
type | string |
?????? ???? ???? ?????? - single_text ?? ?????????? HTML5, ??????? ???
???????? ??? ???????????? (datetime , date ??? time ). |