Функция form_row
Функция form_row в Twig-шаблоне выводит полный ряд поля формы: метку, сам виджет ввода и сообщения об ошибках. Первым параметром передаётся переменная поля формы, вторым - массив переменных для тонкой настройки вывода. Функция возвращает готовую HTML-разметку ряда.
Синтаксис
{{ form_row(field, variables) }}
Пример
Давайте создадим простую форму с полем name и выведем его через form_row. Сначала создадим контроллер:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class FormController extends AbstractController
{
#[Route('/form', name: 'form_index')]
public function index(Request $request): Response
{
$form = $this->createFormBuilder()
->add('name', TextType::class)
->add('save', SubmitType::class)
->getForm();
$form->handleRequest($request);
return $this->render('form/index.html.twig', [
'form' => $form->createView(),
]);
}
}
?>
Теперь выведем поле name через form_row в шаблоне:
{{ form_start(form) }}
{{ form_row(form.name) }}
{{ form_row(form.save) }}
{{ form_end(form) }}
Результат выполнения кода:
<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>
Пример
Давайте передадим переменную label вторым параметром, чтобы изменить текст метки поля:
{{ form_start(form) }}
{{ form_row(form.name, {'label': 'User name'}) }}
{{ form_row(form.save) }}
{{ form_end(form) }}
Результат выполнения кода:
<div>
<label for="form_name">User 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>
Пример
Давайте скроем метку поля, передав параметр label со значением false:
{{ form_start(form) }}
{{ form_row(form.name, {'label': false}) }}
{{ form_row(form.save) }}
{{ form_end(form) }}
Результат выполнения кода:
<div>
<input type="text" id="form_name" name="form[name]">
</div>
<div>
<button type="submit" id="form_save" name="form[save]">Save</button>
</div>
Смотрите также
-
функция
form_widget,
которая выводит только виджет поля -
функция
form_label,
которая выводит только метку поля -
функция
form_errors,
которая выводит только ошибки поля -
функция
form,
которая выводит всю форму целиком