Метод getRoot
Метод getRoot класса Form возвращает
корневую форму составной формы. Если форма
является вложенной, метод поднимается по цепочке
родителей до самой верхней формы и возвращает
её. Если форма уже является корневой, метод
возвращает её саму. Метод не принимает параметров.
Синтаксис
$root = $form->getRoot();
Пример
Давайте создадим форму с вложенной формой
и получим корень через метод getRoot:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Form\Extension\Core\Type\FormType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
class FormController extends AbstractController
{
public function index(): Response
{
$factory = $this->container->get('form.factory');
$builder = $factory->createBuilder(FormType::class);
$builder->add('name', TextType::class);
$builder->add('inner', FormType::class, [
'data_class' => null,
]);
$form = $builder->getForm();
$inner = $form->get('inner');
$root = $inner->getRoot();
return new Response($root->getName());
}
}
?>
Результат выполнения кода:
"form"
Пример
Давайте проверим, что для корневой формы метод возвращает саму форму:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Form\Extension\Core\Type\FormType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
class FormController extends AbstractController
{
public function index(): Response
{
$factory = $this->container->get('form.factory');
$builder = $factory->createBuilder(FormType::class);
$builder->add('name', TextType::class);
$form = $builder->getForm();
$root = $form->getRoot();
$res = $root === $form ? 'same' : 'different';
return new Response($res);
}
}
?>
Результат выполнения кода:
"same"