Поле SubmitType

Поле SubmitType

Кнопка отправки.

???????????? ??? ??? button submit
??????????? ?????
???????????? ??? ButtonType
????? SubmitType

Кнопка отправки имеет дополнительный метод isClicked(), который позволяет вам проверять, была ли использована эта кнопка для отправки формы. Это особенно полезно, когда форма имеет несколько кнопок отправки:

1
2
3
if ($form->get('save')->isClicked()) {
    // ...
}

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

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.

label

тип: string по умолчанию: Ярлык "угадывается" по имени поля

Устанавливает ярлык, который будет отображён на кнопке. Ярлык также может быть установлен напрямую внутри шаблона:

  • Twig
  • PHP
1
{{ form_widget(form.save, { 'label': 'Click me' }) }}

label_attr

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

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

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

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

Это домен перевода, который будет использован для любых ярлыков или опций, которые отображаются для этой кнопки.

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 ???? ?? ?????? ??????.