Метод all класса Form
Метод all класса Form возвращает
массив всех дочерних полей формы. Ключами массива
являются имена полей, а значениями - объекты
Form. Метод не принимает параметров
и возвращает пустой массив, если у формы нет полей.
Синтаксис
public function all(): array
Пример
Давайте создадим форму с двумя полями и получим
все её дочерние элементы через метод all:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentFormExtensionCoreTypeTextType;
use SymfonyComponentFormExtensionCoreTypeSubmitType;
use SymfonyComponentFormFormFactoryInterface;
use SymfonyComponentRoutingAttributeRoute;
class FormController extends AbstractController
{
#[Route('/form', name: 'form_index')]
public function index(Request $request, FormFactoryInterface $factory): Response
{
$form = $factory->createBuilder()
->add('name', TextType::class)
->add('email', TextType::class)
->add('save', SubmitType::class)
->getForm();
$children = $form->all();
foreach ($children as $name => $child) {
echo $name . ' ';
}
return new Response();
}
}
?>
Результат выполнения кода:
"name email save "
Пример
Давайте получим конкретное поле из массива
all и выведем его имя через метод
getName:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentFormExtensionCoreTypeTextType;
use SymfonyComponentFormFormFactoryInterface;
use SymfonyComponentRoutingAttributeRoute;
class FormController extends AbstractController
{
#[Route('/form-name', name: 'form_name')]
public function name(Request $request, FormFactoryInterface $factory): Response
{
$form = $factory->createBuilder()
->add('name', TextType::class)
->add('email', TextType::class)
->getForm();
$children = $form->all();
return new Response($children['name']->getName());
}
}
?>
Результат выполнения кода:
"name"
Пример
Давайте проверим, что метод all возвращает
пустой массив, если у формы нет дочерних полей:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentFormFormFactoryInterface;
use SymfonyComponentRoutingAttributeRoute;
class FormController extends AbstractController
{
#[Route('/form-empty', name: 'form_empty')]
public function empty(Request $request, FormFactoryInterface $factory): Response
{
$form = $factory->createBuilder()
->getForm();
$children = $form->all();
return new Response((string) count($children));
}
}
?>
Результат выполнения кода:
"0"