У меня есть форма поиска в представлении индекса моего приложения, однако всякий раз, когда я отправляю ее, она перенаправляется обратно на домашнюю страницу. Глядя на вкладку «Сеть» 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.';
}
Ваша помощь очень ценится.
У меня было что-то подобное раньше, это происходило, когда токен 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
Других решений пока нет …