Сделал форму не связанную с сущностью. Фактически это простая форма сортировки записей в админке (в дальнейшем добавлю и фильтрацию по параметрам).
class ImageFilterType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('sortBy', ChoiceType::class, [
'choices' => [
'ID' => 'id',
'label.createdAt' => 'createdAt',
'label.publishedAt' => 'publishedAt',
'label.updatedAt' => 'updatedAt',
],
'label' => 'label.sort_by',
'required' => true,
])
->add('direction', ChoiceType::class, [
'choices' => [
'label.sort_direction_ASC' => 'ASC',
'label.sort_direction_DESC' => 'DESC'
],
'label' => 'label.sort_direction',
'required' => true,
])
->add('submit', SubmitType::class, [
'label' => 'OK'
]);
}
}
В контроллере пытаюсь получить переданные формой параметры:
/**
* @Route("/images/{page}", defaults={"page": 1}, name="admin_image_list")
*/
public function index(int $page, Request $request, ImageRepository $imageRepository): Response
{
$sortBy = $request->get('sortBy', 'id');
$direction = $request->get('direction', 'DESC');
$filterForm = $this->createForm(ImageFilterType::class, [
'sortBy' => $sortBy,
'direction' => $direction,
])->handleRequest($request);
$images = $imageRepository->findEntities([], $sortBy, $direction, $page, 10);
return $this->render('admin/gallery/image_list.html.twig', [
'images' => $images,
'filterForm' => $filterForm->createView(),
]);
}
Но в итоге я не получаю в контроллере параметров `$sortBy` и `$direction` - они назначаются по дефолту. В дебаг панели видно, что я получаю не отдельные параметры `sortBy` и `direction`, а массив
image_filter [▼
"sortBy" => "updatedAt"
"direction" => "DESC"
"submit" => ""
"_token" => "dOketsGIJFAVlVaPvjbBtzx5b3ksQ8nZ6jwY-JT7HDo"
]
Если передавать форму GET методом, то адресная строка такая: `/admin/images?image_filter%5BsortBy%5D=updatedAt&image_filter%5Bdirection%5D=DESC&image_filter%5Bsubmit%5D=&image_filter%5B_token%5D=dOketsGIJFAVlVaPvjbBtzx5b3ksQ8nZ6jwY-JT7HDo`
Как правильно обработать такую форму?