Поле SubmitType
Дата обновления перевода 2023-09-25
Поле SubmitType
Кнопка отправки.
???????????? ??? | ??? button submit |
???????????? ??? | ButtonType |
????? | SubmitType |
Tip
The full list of options defined and inherited by this form type is available running this command in your app:
1 2
# replace 'FooType' by the class name of your form type
$ php bin/console debug:form FooType
Кнопка отправки имеет дополнительный метод isClicked(), который позволяет вам проверять, была ли использована эта кнопка для отправки формы. Это особенно полезно, когда форма имеет несколько кнопок отправки:
1 2 3
if ($form->get('save')->isClicked()) {
// ...
}
Опции
validate
тип: boolean
по умолчанию: true
Установите эту опцию как false
, чтобы отключить валидацию формы браузером на
клиентской стороне.
Наследуемые опции
attr
тип: array
по умолчанию: array()
Есди вы хотите добавить дополнительные атрибуты к HTML-представлению кнопки, то
вы можете использовать опцию attr
. Это ассоциативный массив с HTML-атрибутом
в качестве ключа. Это может быть полезно, когда вам нужно установить для кнопки
пользовательский класс:
1 2 3 4 5 6
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
// ...
$builder->add('save', SubmitType::class, array(
'attr' => array('class' => 'save'),
));
disabled
тип: boolean
по умолчанию: false
Если вы не хотите, чтобы пользователь мог нажимать на кнопку, вы можете установить опцию отключения, как "true". Отправить форму без этой кнопки будет невозможно, даже путём обхода браузера и отправки запроса вручную, например, с помощью cURL.
Дата обновления перевода 2024-07-26
label
тип: string
или TranslatableMessage
по умолчанию: Ярлык "угадывается" по имени поля
Устанавливает ярлык, который будет отображён на кнопке. Ярлык также может быть установлен напрямую внутри шаблона:
1
{{ form_widget(form.save, { 'label': 'Click me' }) }}
label_format
тип: string
по умолчанию: null
Конфигурирует строку, используемую в качестве ярылка поля, в случае, если
опция label
не была установлена. Это полезно при использовании
сообщений переводов ключевых слов.
Если вы используете сообщения переводов ключевых слов в качестве ярлыков, то у
вас часто будет несколько сообщений с ключевым словом для одного и того же ярлыка
(например, profile_address_street
, invoice_address_street
). Это потому,
что ярлык строится для каждого "пути" к полю. Чтобы избежать повтора сообщений
ключевых слов, вы можете сконфигурировать формат ярлыка в качестве статичного
значения, например:
1 2 3 4 5 6 7 8
// ...
$profileFormBuilder->add('address', AddressType::class, array(
'label_format' => 'form.address.%name%',
));
$invoiceFormBuilder->add('invoice', AddressType::class, array(
'label_format' => 'form.address.%name%',
));
Эта опция наследуется дочерними типами. С использованием вышенаписанного кода,
ярлык поля street
обеих форм будет использовать сообщение с ключевым словом
form.address.street
.
В формате ярлыка доступны две переменные:
%id%
-
Уникальный идентификатор для поля, состоящий из полного пути к полю и имени
поля (например,
profile_address_street
); %name%
-
Имя поля (например,
street
).
Значение по умолчанию (null
) приводит к
"человеческой" версии имени поля.
Note
Опция label_format
оценивается в теме формы. Убедитесь в том, что вы
обновили ваши щаблоны, в случае, если вы настраивали темизацию форм.
translation_domain
тип: string
по умолчанию: messages
Это домен перевода, который будет использован для любых ярлыков или опций, которые отображаются для этой кнопки.
label_translation_parameters
тип: array
по умолчанию: []
Содержание опции label переводится перед отображением, поэтому она может содержать может содержать заполнители перевода. Данная опция определяет значения, используемые для замены этих заполнителей.
Учитывая данное сообщение перевода:
1 2
# translations/messages.en.yaml
form.order.submit_to_company: 'Send an order to %company%'
Вы можете указать значения заполнителя следующим образом:
1 2 3 4 5 6 7 8 9
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
// ...
$builder->add('send', SubmitType::class, [
'label' => 'form.order.submit_to_company',
'label_translation_parameters' => [
'%company%' => 'ACME Inc.',
],
]);
Опция кнопок label_translation_parameters
объединена с аналогичной опцией
родителей, поэтому кнопки могут повторно использовать и/или переопределять любые
родительские заполнители.
attr_translation_parameters
type: array
default: []
The content of the title
and placeholder
values defined in the attr
option is translated before displaying it, so it can contain
translation placeholders. This
option defines the values used to replace those placeholders.
Given this translation message:
1 2 3
# translations/messages.en.yaml
form.order.id.placeholder: 'Enter unique identifier of the order to %company%'
form.order.id.title: 'This will be the reference in communications with %company%'
You can specify the placeholder values as follows:
1 2 3 4 5 6 7 8 9
$builder->add('id', null, [
'attr' => [
'placeholder' => 'form.order.id.placeholder',
'title' => 'form.order.id.title',
],
'attr_translation_parameters' => [
'%company%' => 'ACME Inc.',
],
]);
The attr_translation_parameters
option of children fields is merged with the
same option of their parents, so children can reuse and/or override any of the
parent placeholders.
row_attr
type: array
default: []
An associative array of the HTML attributes added to the element which is used to render the form type row :
1 2 3
$builder->add('body', TextareaType::class, [
'row_attr' => ['class' => 'text-editor', 'id' => '...'],
]);
See also
Use the attr
option if you want to add these attributes to
the form type widget element.
validation_groups
тип: array
по умолчанию: null
Когда ваша форма содержит несколько кнопок отправки, вы можете менять группу валидации, взависимости от того, какая кнопка была использована для отправки. Представьте себе мастера формы регистрации с кнопками, чтобы переходить на следующий или предыдущий шаг:
1 2 3 4 5 6 7 8 9 10 11
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
// ...
$form = $this->createFormBuilder($user)
->add('previousStep', SubmitType::class, array(
'validation_groups' => false,
))
->add('nextStep', SubmitType::class, array(
'validation_groups' => array('Registration'),
))
->getForm();
Специальный false
гарантирует, что при нажатии кнопки предыдущего шага не
выполняется валидация. Когда нажимается вторая кнопка, валидируются все ограничения
из "Registration".
See also
Вы можете прочитьать больше об этом в Как выбирать группы валидации, основанные на отправленных данных.
Переменные формы
?????????? | ??? | ?????????? |
---|---|---|
clicked | boolean |
???? ?? ?????? ??????. |