Функция form_widget
Функция form_widget используется в шаблонах Twig для вывода HTML-разметки поля формы. Первым параметром передаётся представление формы или отдельного поля, полученное из метода createView. Вторым параметром можно передать массив переменных, например attr для добавления HTML-атрибутов. Функция возвращает готовый HTML-код поля.
Синтаксис
{{ form_widget(form) }}
{{ form_widget(form.field, { attr: { class: 'abcde' } }) }}
Пример
Давайте создадим простую форму с полем name и выведем её через form_widget:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentFormExtensionCoreTypeTextType;
use SymfonyComponentFormExtensionCoreTypeSubmitType;
use SymfonyComponentFormFormBuilderInterface;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_form')]
public function form(): Response
{
$form = $this->createFormBuilder()
->add('name', TextType::class)
->add('save', SubmitType::class)
->getForm();
return $this->render('article/form.html.twig', [
'form' => $form->createView(),
]);
}
}
?>
Теперь выведем форму в шаблоне:
{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_end(form) }}
Результат выполнения кода:
<form name="form" method="post">
<div>
<label for="form_name">Name</label>
<input type="text" id="form_name" name="form[name]">
</div>
<div>
<button type="submit" id="form_save" name="form[save]">Save</button>
</div>
</form>
Пример
Давайте выведем только одно поле name и добавим ему CSS-класс:
{{ form_start(form) }}
{{ form_widget(form.name, { attr: { class: 'abcde' } }) }}
{{ form_widget(form.save) }}
{{ form_end(form) }}
Результат выполнения кода:
<form name="form" method="post">
<div>
<label for="form_name">Name</label>
<input type="text" id="form_name" name="form[name]" class="abcde">
</div>
<div>
<button type="submit" id="form_save" name="form[save]">Save</button>
</div>
</form>
Пример
Давайте передадим значение value через переменные:
{{ form_start(form) }}
{{ form_widget(form.name, { value: 'abcde' }) }}
{{ form_widget(form.save) }}
{{ form_end(form) }}
Результат выполнения кода:
<form name="form" method="post">
<div>
<label for="form_name">Name</label>
<input type="text" id="form_name" name="form[name]" value="abcde">
</div>
<div>
<button type="submit" id="form_save" name="form[save]">Save</button>
</div>
</form>
Смотрите также
-
функция
form,
которая выводит всю форму целиком -
функция
form_row,
которая выводит label, поле и ошибки -
функция
form_label,
которая выводит только label поля -
функция
form_errors,
которая выводит ошибки поля