Laravel не может получить POST в индексе (/)

У меня есть форма поиска в представлении индекса моего приложения, однако всякий раз, когда я отправляю ее, она перенаправляется обратно на домашнюю страницу. Глядя на вкладку «Сеть» Chrome, я увидел 302 Move Permanently код состояния при отправке. Я пытаюсь получить ключевые слова пользователей, сохранить их и перенаправить на страницу поиска.

Редактировать:
После поиска abit я нашел этот аналогичный вопрос. Предоставленный ответ не решил мою проблему.

В маршрутах .php

Route::get('/', ['as' => 'home', 'uses' => 'PagesController@home']);

/.../

Route::group(['before' => 'csrf'], function()
{
Route::post('/', ['as' => 'post-search', 'uses' => 'UserController@postSearch']);
});

Моя форма:

<form action="{{ URL::route('post-search') }}" method="POST" class="form-inline search">
{{ Form::token() }}
<input type="text" name="search" class="form-control" placeholder="{{ trans('form.search') }}">
<input type="submit" class="btn btn-primary" value="Search">
</form>

Наконец, мой метод контроллера:

public function postSearch()
{
$fields = Input::all();

$rules = [ 'search' => 'required' ];

$validator = Validator::make($fields, $rules);

if ($validator->fails())
{
return 'Validation did not work.';
}
else
{
$search = Input::get('search');

return Redirect::route('search', $search);
}

return 'Something terrible happened.';
}

Ваша помощь очень ценится.

2

Решение

У меня было что-то подобное раньше, это происходило, когда токен csrf, сохраненный в сеансе, отличается от токена, сгенерированного из формы.
Итак, Modify your code позволяет увидеть, что происходит.

От

Route::group(['before' => 'csrf'], function()

{
Route :: post (‘/’, [‘as’ => ‘post-search’, ‘использует’ => ‘UserController @ postSearch’]);
});

в`

Route::post('/', ['as' => 'post-search', 'uses' => 'UserController@postSearch']);

если это работает таким образом, то вам придется очистить куки и сеансы браузера, чтобы снова включить csrf

0

Другие решения

Других решений пока нет …