У меня проблемы при попытке передать параметры из моей формы в мой контроллер.
То, что я пытаюсь реализовать, - это список вариантов, которые позволят отображать список пользователей в зависимости от параметров (роль, запрет ...).
Проблема в том, что я думаю, что я не получаю параметр после отправки, чтобы мой запрос был в индексе. Может ли проблема заключаться в том, что я повторяю одну и ту же форму в одной и той же функции до и после отправки?
Я попытался поставить теги href/onclick/ в свои параметры, но это не сработало.
index.html.twig
<form class = "form-group" action = "{{ path('user_index') }}">
<table class = "table">
<tr>
<td>
<select class = "custom-select">
<option selected = "">Which users to you want to see ?</option>
<option value = "1">All</option>
<option value = "2">Students</option>
<option value = "3">Teachers</option>
<option value = "4">Admins</option>
<option value = "5">Super Admin</option>
<option value = "6">Banned</option>
<option value = "7">Unbanned</option>
</select>
</td>
<td>
<input type = "submit" value = "Submit">
</td>
</tr>
</table>
</form>
UserController.php
/**
* Requires ADMIN_ROLE
*
* @Route("/", name = "user_index", methods = {"GET"})
*/
public function index(Request $request): Response
{
$this->denyAccessUnlessGranted('ROLE_ADMIN');
$ban = true;
// trying to get the value of the option in form ?
$value = $request->request->get('value');
switch ($value){
case 1 :
$users = $this->getDoctrine()
->getRepository(User::class)
->findAll();
break;
case 6 :
$users = $this->getDoctrine()
->getRepository(User::class)
->findByBan($ban);
break;
case 7 :
$ban = false;
$users = $this->getDoctrine()
->getRepository(User::class)
->findByBan($ban);
break;
default:
$users = $this->getDoctrine()
->getRepository(User::class)
->findAll();
break;
}
return $this->render('user/index.html.twig', [
'title' => 'User Index',
'headtitle' => 'View all the users list',
'users' => $users,
]);
}
о да ты прав..
<select> должен В самом деле иметь атрибут name. вы, конечно, можете назвать это неописательно «ценностью», но я бы посоветовал что-то более разумное, например ... <select name = "usergroup">






Как я понимаю, метод вашей формы - запрос GET. Чтобы получить переменную $_GET с помощью компонента HttpFoundation, вам необходимо:
Пример:
<form class = "form-group" action = "{{ path('user_index') }}" method = "get">
<table class = "table">
<tr>
<td>
<select class = "custom-select" name = "users">
<option selected = "">Which users to you want to see ?</option>
<option value = "1">All</option>
<option value = "2">Students</option>
<option value = "3">Teachers</option>
<option value = "4">Admins</option>
<option value = "5">Super Admin</option>
<option value = "6">Banned</option>
<option value = "7">Unbanned</option>
</select>
</td>
<td>
<input type = "submit" value = "Submit">
</td>
</tr>
</table>
</form>
$request->query->get('users')Проверить: Объект запроса Symfony
ваш выбор не имеет имени:
<select class = "custom-select" name = "userselect">
<option selected = "">Which users to you want to see ?</option>
<option value = "1">All</option>
<option value = "2">Students</option>
<option value = "3">Teachers</option>
<option value = "4">Admins</option>
<option value = "5">Super Admin</option>
<option value = "6">Banned</option>
<option value = "7">Unbanned</option>
</select>
и в вашем контроллере получите «userselect» в $ request.
инициализировать глобальный оператор переключения внешней формы $users....