Laravel POST - работает, а GET - нет

Европа - быстрые серверы на дисках NVMe от $5 / Русский датацентр от 199руб

Тема в разделе "Laravel", создана пользователем Виктор2, 3 янв 2019.

  1. Виктор2

    Виктор2 Новичок

    Сообщения:
    4
    Ваш город:
    Минск, Belarus
    Address:
    Minsk, Belarus
    Country:
    Location on Map:
    Помогите разобраться.
    Есть форма с одним полем ввода

    {{ Form:: open(['route' => 'search_text', 'method' => 'GET', 'enctype'=>'multipart/form-data'])}}
    <input type="text" name="text">
    {{ Form::close() }}

    Есть роут:
    Route::get('/search', 'MrArticlesController@Search')->name('search_tex');

    И есть контроллер

    public function searchView()
    {
    dump($_GET);
    }

    Ввожу в поле, например, "111111" и вот что приходит:
    в адресной строке браузера: http://mysite.com/search?text=111111
    Попытка вывести из контроллера дамп dd($_GET); приводит к этому:

    array:1 [▼
    "url" => "search"
    ]

    Что самое интересное, если форму отправлять методом POST, то в $_POST всё нормально приходит.
    Пробовал как в документации к Laravel, с помощью методов Input, Request $request - всё не по чём.
    Добавление cstf-токена не помогло. Пробовал отправлять форму на сторонний файл .php, который не связан с Laravel, то всё нормально извлекается и суперглобальной $_GET.
    Делаю вывод, что где-то сам Laravel обрабатывает входящий запрос, поскольку в адресной строке браузера сам запрос есть. Но как его извлечь?
     
  2. jonjonson

    jonjonson Охренеть

    Сообщения:
    708
    Ваш город:
    Находка, Приморский край, Россия
    Address:
    Nakhodka, Russia
    Country:
    Location on Map:
    Так может стоит изучить документацию Laravel? Узнать об Request, например.
     
  3. Виктор2

    Виктор2 Новичок

    Сообщения:
    4
    Ваш город:
    Минск, Belarus
    Address:
    Minsk, Belarus
    Country:
    Location on Map:
    "Пробовал как в документации к Laravel, с помощью методов Input, Request $request - всё не по чём."
     
  4. jonjonson

    jonjonson Охренеть

    Сообщения:
    708
    Ваш город:
    Находка, Приморский край, Россия
    Address:
    Nakhodka, Russia
    Country:
    Location on Map:
    Значит изучаем свой код и ищем ошибки.

    Мне, например, не понятно, зачем в GET multipart/form-data засовывается.
    Посмотрите реальный код формы после генерации.
     
  5. AmdY

    AmdY Пью пиво Команда форума

    Сообщения:
    7.006
    Ваш город:
    Belarus, Minsk
    Address:
    Minsk, Belarus
    Country:
    Location on Map:
    Бред какой-то. Ты пишешь что у тебя роут MrArticlesController@Search, а затем приводит код метода public function searchView(), хотя судя по роуту должен быть function Search()
     
  6. Виктор2

    Виктор2 Новичок

    Сообщения:
    4
    Ваш город:
    Минск, Belarus
    Address:
    Minsk, Belarus
    Country:
    Location on Map:
    Да, опечатался. Там методы совпадают. searchView()
    Но проблема осталась
     
    Последнее редактирование: 6 янв 2019
  7. Виктор2

    Виктор2 Новичок

    Сообщения:
    4
    Ваш город:
    Минск, Belarus
    Address:
    Minsk, Belarus
    Country:
    Location on Map:
    Разобрался. Может кому пригодится.
    В Laravel есть одна особенность - это файл index.php находится в папке public и поэтому многие, как и я в данном случае, используют .htaccess для более приятного отображения адреса в браузере
    <IfModule mod_rewrite.c>
    RewriteEngine On
    # Removes index.php from ExpressionEngine URLs
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?url=$1 [PT,L]
    </IfModule>
    Вся изюминка была в этом: ?url=$1
    Получается старые $_GET параметры затирались и перезаписывались роутом из формы, в моём случае "search". Удалив ?url=$1 у меня всё заработало.
     
  8. AmdY

    AmdY Пью пиво Команда форума

    Сообщения:
    7.006
    Ваш город:
    Belarus, Minsk
    Address:
    Minsk, Belarus
    Country:
    Location on Map:
    Нет, так никто не делает. Фреймворк располагается выше точки входа неспроста, но последователи церкви Попова почему-то считают себя умнее и что прописать документрут правильно сложнее, чем городить костыли с реврайтом. Да и апачем уже лет 10 никто не пользуется.