firep91613
Новичок
Я что-то совсем запутался. Есть страница показа всех пользователей с пагинацией. Еще сверху есть форма, чтобы фильтровать пользователей.
Сама форма:
Экшен:
При попытке отправить форму появляется ошибка - App\Repository\UserRepository::findByFilters(): Argument #1 ($data) must be of type array, App\Entity\User given, called in /var/www/website/src/Controller/Admin/UserController.php on line 29. Я никак в толк не возьму, почему он туда пустую сущность передает а не массив?
Сама форма:
PHP:
class UserFilterType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('q', TextType::class, [
'mapped' => false,
'required' => false,
'attr' => ['placeholder' => 'Поиск по имени или email', 'class' => 'form-control']
])
->add('role', EntityType::class, [
'class' => Role::class,
'choice_label' => 'description',
'placeholder' => 'Все роли',
'required' => false,
'attr' => ['class' => 'form-select']
])
->add('isActive', ChoiceType::class, [
'choices' => [
'Активен' => '1',
'Заблокирован' => '0',
],
'placeholder' => 'Статус',
'required' => false,
'attr' => ['class' => 'form-select']
])
->add('submit', SubmitType::class, [
'label' => 'Фильтровать',
'attr' => ['class' => 'btn btn-outline-secondary']
]);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'method' => 'GET',
'data_class' => User::class,
'csrf_protection' => false
]);
}
}
PHP:
#[Route('/admin/user', name: 'admin_user_index')]
public function index(Request $request, PaginatorInterface $paginator, UserRepository $repository): Response
{
$form = $this->createForm(UserFilterType::class);
$form->handleRequest($request);
$filterData = $form->isSubmitted() && $form->isValid() ? $form->getData() : [];
$queryBuilder = $repository->findByFilters($filterData);
$pagination = $paginator->paginate(
$queryBuilder,
$request->query->getInt('page', 1),
self::PER_PAGE
);
return $this->render(self::VIEW_INDEX, [
'pagination' => $pagination,
'form' => $form
]);
}