Поле RangeType

Поле RangeType

Поле RangeType - это шкала, которая отображается с использованием тега HTML5 <input type="range" />.

???????????? ??? ???? input range field (????? ? ????????, ?????????????? HTML5)
??????????? ?????
???????????? ??? TextType
????? RangeType

Базовое применение

1
2
3
4
5
6
7
8
9
use Symfony\Component\Form\Extension\Core\Type\RangeType;
// ...

$builder->add('name', RangeType::class, array(
    'attr' => array(
        'min' => 5,
        'max' => 50
    )
));

Наследуемые опции

Эти опции наследуются из FormType:

attr

тип: array по умолчанию: array()

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

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

data

тип: mixed по умолчанию : По умолчанию является полем основоположной структуры.

Когда вы создаёте форму, каждое поле изначально отображает значение соотствующего свойства данных домена формы (например, если вы привязываете объект к форме). Если вы хотите переопределить эти изначальные значения для формы или индивидуального поля, вы можете установить это в опции данных:

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

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

Caution

Опция data всегда переопределяет значение, взятое из данных домена (объекта) при отображении. Это означает, что значение объекта также переопределяется, когда форма редактирует уже существующий сохранённый объект, что приводит к потере сохранённого значения при отправке формы.

disabled

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

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

empty_data

тип: mixed

.. Этот файл должен быть включен только с "началом после" или "окончанием до",
установленными в значении заполнителя. Его цель - позволить нам включать только часть этого файла.

DEFAULT_PLACEHOLDER

Эта опция определяет, какое значение вернёт поле, если отправленное значение пустое (или отсутствует). Она не устаналивает изначальное значение, если оно не предоставлено, когда форма отображается для просмотра.

Это означает, что вам помогают обрабатывать отправку формы с пустыми полями. Например, если вы хотите, чтобы поле name было ясно установлено, как John Doe, когда значение не выбрано, вы можете сделать это так:

1
2
3
4
$builder->add('name', null, array(
    'required'   => false,
    'empty_data' => 'John Doe',
));

Это всё ещё будет отображать пустое текстовое поле, но при отправке будет установлено значение John Doe. Используйте опции data или placeholder, чтобы показать это изначальное значение в отображённой форме.

Если форма составная, то вы можете установить empty_data в качестве массива, объекта или замыкания. См. статью Як сконфігурувати порожні дані для класу форми , чтобы узнать больше об этих опциях.

Note

Если вы хотите установить опцию empty_data для всего вашего класса форм, см. статью Як сконфігурувати порожні дані для класу форми.

Caution

Преобразователи данных формы всё ещё будут применяться к значению empty_data. Это означает, что пустая строка будет преобразована в null. Используйте пользовательский преобразователь данных, если вы хотите ясно вернуть пустую строку.

:end-before: DEFAULT_PLACEHOLDER

Значение по умолчанию - '' (пустая строка).

empty_data

тип: mixed

.. Этот файл должен быть включен только с "началом после" или "окончанием до",
установленными в значении заполнителя. Его цель - позволить нам включать только часть этого файла.

DEFAULT_PLACEHOLDER

Эта опция определяет, какое значение вернёт поле, если отправленное значение пустое (или отсутствует). Она не устаналивает изначальное значение, если оно не предоставлено, когда форма отображается для просмотра.

Это означает, что вам помогают обрабатывать отправку формы с пустыми полями. Например, если вы хотите, чтобы поле name было ясно установлено, как John Doe, когда значение не выбрано, вы можете сделать это так:

1
2
3
4
$builder->add('name', null, array(
    'required'   => false,
    'empty_data' => 'John Doe',
));

Это всё ещё будет отображать пустое текстовое поле, но при отправке будет установлено значение John Doe. Используйте опции data или placeholder, чтобы показать это изначальное значение в отображённой форме.

Если форма составная, то вы можете установить empty_data в качестве массива, объекта или замыкания. См. статью Як сконфігурувати порожні дані для класу форми , чтобы узнать больше об этих опциях.

Note

Если вы хотите установить опцию empty_data для всего вашего класса форм, см. статью Як сконфігурувати порожні дані для класу форми.

Caution

Преобразователи данных формы всё ещё будут применяться к значению empty_data. Это означает, что пустая строка будет преобразована в null. Используйте пользовательский преобразователь данных, если вы хотите ясно вернуть пустую строку.

:start-after: DEFAULT_PLACEHOLDER

error_bubbling

тип: boolean по умолчанию: false, кроме случаев, когда форма compound

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

Якщо true, будь-які помилки цього поля будуть передані батьківському полю або формі. Наприклад, якщо встановлено true у нормальному полі, будь-які помилки цього поля будуть прикріплені до головної форми, а не до конкретного поля.

error_mapping

тип: array по умолчанию: array()

Эта опция позволяет вам изменять цель ошибки валидации.

Представьте, что у вас есть пользовательский метод под именем matchingCityAndZipCode(), который валидирует, совпадает ли город и почтовый индекс. К сожалению, поля "matchingCityAndZipCode" в вашей форме нет, поэтому всё, что Symfony может сделать - это отобразить ошибку наверху формы.

С настроенным отображением ошибок вы можете сделать лучше: привяжите ошибку к полю города, чтобы она отображалась над ним:

1
2
3
4
5
6
7
8
public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults(array(
        'error_mapping' => array(
            'matchingCityAndZipCode' => 'city',
        ),
    ));
}

Вот правила для лево- и правостороннего отображения:

  • Левая сторона содержит пути свойств;
  • Если наружение генерируется в свойств или методе класс, то его путь - это просто propertyName;
  • Вы можете создать вложенные пути свойств, соединив их, разделяя свойства точками. Например: addresses[work].matchingCityAndZipCode;
  • Правая сторона содержит просто имена полей в форме.

По умолчанию, ошибки любого свойства, которое не отображенно, соберутся в родительской форме. Вы можете использовать точку (.) в левой части, чтобы привязать ошибки всех неотображённых свойств к конкретному полю. Например, чтобы привязать эти ошибки к полю city, используйте:

1
2
3
4
5
$resolver->setDefaults(array(
    'error_mapping' => array(
        '.' => 'city',
    ),
));

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

label

тип: string або TranslatableMessage за замовчуванням: Ярлик "вгадується" з імені поля

Встановлює ярлик, який буде використано при відображенні поля. Установка false прридушить ярлик:

1
2
3
4
5
6
7
8
use Symfony\Component\Translation\TranslatableMessage;

$builder
    ->add('zipCode', null, [
        'label' => 'The ZIP/Postal code',
        // опціонально, ви можете використати обʼєкти TranslatableMessage в якості змісту ярлика
        'label' => new TranslatableMessage('address.zipCode', ['%country%' => $country], 'address'),
    ])

Ярлик також може бути встановлений у шаблоні:

  • Twig
  • PHP
1
{{ form_label(form.name, 'Your name') }}

label_attr

тип: array по умолчанию: array()

Устанавливает HTML-атрибуты для элемента <label>, который будет использован при отображении ярлыка для поля. Это ассоциативный массив с HTML-атрибутом в качестве ключа. Этот атрибут может также быть установлен прямо внутри шаблона:

  • Twig
  • PHP
1
2
3
{{ form_label(form.name, 'Your name', {
       'label_attr': {'class': 'CUSTOM_LABEL_CLASS'}
}) }}

mapped

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

Если вы хотите, чтобы поле было проигнорировано про чтении или записи в него объетка, вы можете установить опцию mapped, как false.

required

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

Если "true", то будет отображён обязательный атрибут HTML5. Соответствующий label также отобразится с классом required.

Эта опция внешняя и не зависит от валидации. В лучшем случае, если вы позволите Symfony отгадать ваш тип поля, тогда значение этой опции будет угадано из вашей информации о валидации.

Note

Обязательная опция также влияет на то, как будут обработаны пустые данные для каждого поля. Чтобы узнать больше, см. опцию empty_data.

trim

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

Если "true", то свободное пространство значения отправленной строки будет отделено с помощью функции trim, если данные привязаны. Это гарантирует, что если значение отправлено с лишними свободными пространствами, они будут удалены до того, как значение будет опять объединено с объектом, лежащим в основе.