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

Виктор2

Новичок
Помогите разобраться.
Есть форма с одним полем ввода

{{ 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 обрабатывает входящий запрос, поскольку в адресной строке браузера сам запрос есть. Но как его извлечь?
 

jonjonson

Охренеть
Так может стоит изучить документацию Laravel? Узнать об Request, например.
 

Виктор2

Новичок
"Пробовал как в документации к Laravel, с помощью методов Input, Request $request - всё не по чём."
 

jonjonson

Охренеть
Значит изучаем свой код и ищем ошибки.

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

AmdY

Пью пиво
Команда форума
Бред какой-то. Ты пишешь что у тебя роут MrArticlesController@Search, а затем приводит код метода public function searchView(), хотя судя по роуту должен быть function Search()
 

Виктор2

Новичок
Да, опечатался. Там методы совпадают. searchView()
Но проблема осталась
 
Последнее редактирование:

Виктор2

Новичок
Разобрался. Может кому пригодится.
В 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 у меня всё заработало.
 

AmdY

Пью пиво
Команда форума
Нет, так никто не делает. Фреймворк располагается выше точки входа неспроста, но последователи церкви Попова почему-то считают себя умнее и что прописать документрут правильно сложнее, чем городить костыли с реврайтом. Да и апачем уже лет 10 никто не пользуется.
 
Сверху