Поле SubmitType

Дата оновлення перекладу 2023-09-25

Поле SubmitType

Кнопка відправки.

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

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

Tip

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

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

Кнопка "Відправити" має додатковий метод isClicked(), який дозволяє перевірити, чи була ця кнопка використана для відправки форми. Це особливо корисно, коли форма має декілька кнопок відправки:

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

Опції

validate

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

Встановіть цю опцію як false, щоб вимкнути валідацію форми на стороні клієнта що виконується браузером.

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

attr

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

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

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

$builder->add('save', SubmitType::class, [
    'attr' => ['class' => 'save'],
]);

disabled

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

Если вы не хотите, чтобы пользователь мог нажимать на кнопку, вы можете установить опцию отключения, как "true". Отправить форму без этой кнопки будет невозможно, даже путём обхода браузера и отправки запроса вручную, например, с помощью cURL.

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

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, [
        'validation_groups' => false,
    ])
    ->add('nextStep', SubmitType::class, [
        'validation_groups' => ['Registration'],
    ])
    ->getForm();

Спеціальне значення false гарантує, що при натисканні кнопки попереднього кроку валідація не виконується. При натисканні другої кнопки валідуються всі обмеження з "Registration".

See also

Ви можете прочитати більше про це в Як обирати групи валідації, засновані на відправлених даних.

Змінні форми

?????? ??? ????????????
clicked boolean ???? ????????? ?????? ?? ??.