Symfony 4 - Как передать параметры из формы в контроллер

У меня проблемы при попытке передать параметры из моей формы в мой контроллер.

То, что я пытаюсь реализовать, - это список вариантов, которые позволят отображать список пользователей в зависимости от параметров (роль, запрет ...).

Проблема в том, что я думаю, что я не получаю параметр после отправки, чтобы мой запрос был в индексе. Может ли проблема заключаться в том, что я повторяю одну и ту же форму в одной и той же функции до и после отправки?

Я попытался поставить теги 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,
        ]);
    }

инициализировать глобальный оператор переключения внешней формы $users....

Shantanu Sharma 15.05.2019 14:50

о да ты прав..

Tonyto 15.05.2019 14:55

<select> должен В самом деле иметь атрибут name. вы, конечно, можете назвать это неописательно «ценностью», но я бы посоветовал что-то более разумное, например ... <select name = "usergroup">

Jakumi 15.05.2019 14:55
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
2 653
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Как я понимаю, метод вашей формы - запрос GET. Чтобы получить переменную $_GET с помощью компонента HttpFoundation, вам необходимо:

  1. Ваш выбранный ввод должен иметь имя.

Пример:

<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>
  1. Попробуйте получить параметры запроса (ПОЛУЧАТЬ) с помощью $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.

Другие вопросы по теме