Проблема с кодировкой URL-адреса страницы Laravel 5

Я создал приложение laravel 5, и теперь я тестирую, как он обрабатывает разные входы. Таким образом, я столкнулся с какой-то странной проблемой. В заголовке у меня есть поле поиска. Он возвращает результаты, разбитые на 10.

Проблема

Если пользователь вводит письмо, для примера «e» на английском языке все работает нормально. Однако, когда пользователь вводит письмо, для примера «e» на болгарском языке – первая страница результатов отображается правильно, и когда пользователь набирает страницу 2, запрос в поиске с «е» на болгарском языке изменяется на «% D0» % B5 ", и больше результатов не видно. Вот фактическая ссылка на сайт. http://podobri.eu

Я предполагаю, что это имеет какое-то отношение к кодировке, но я не вижу, что я делаю неправильно.

Вот фактический код

маршрут

Route::get('/search', [ 'uses' => '\Podobri\Http\Controllers\SearchController@getResults', 'as'=>'search.results', ]); 

SearchController

 public function getResults(Request $request){ $query = $request->input('query'); $comments = Comment::where(function($query){ return $query; })->orderBy('created_at', 'desc')->get(); if(!$query || $query==''){ return view('problems.index')->with('comments', $comments); } $problems = Problem::where(DB::raw("CONCAT(problem_title, ' ', problem_description)"), 'LIKE', "%$query%") ->orWhere('location', 'LIKE', "%$query%") ->orWhere('category', 'LIKE', "%$query%") ->orderBy('created_at', 'desc')->paginate(10); Carbon::setLocale('bg'); return view('search.results') ->with('comments', $comments) ->with('problems', $problems) ->with('title', 'Резултати за "'."$query".'" | Подобри') ->with('description', 'Резултати за "'."$query".'" в системата на Подобри'); } 

Посмотреть

  @foreach($problems as $problem) <div> @include('problems.partials.problemblock') </div> @endforeach <!-- Paginating--> {!! $problems->appends(Request::except('page'))->render() !!} 

Форма поиска

 <form action="{{ route('search.results') }}" role="search" class="navbar-form navbar-left head-form-responsive"> <div class="form-group"> <input type="text" required id='searchQuery' title="Търсете за проблеми" value="{{ Request::input('query') }}" name="query" class="form-control" placeholder="Търсете за проблеми"/> </div> <button type="submit" id='searchBtn' class="btn btn-default">Търсете</button> </form> 

    Мне кажется, что ваша проблема происходит потому, что paginator добавляет конечную косую черту с некоторым нечетным перенаправлением (не уверен, что вы, ребята, используете пользовательский htaccess). Например, если вы ищете e, это URL:

     http://podobri.eu/search?query=e 

    Тем не менее, URL для второй страницы:

     http://podobri.eu/search/?query=e&page=2 

    Обратите внимание на косую черту перед ?query . Если вы удалите косую черту, это сработает. Итак, как вы можете это исправить?

    Это было зафиксировано несколько месяцев назад. Вы можете увидеть эту фиксацию здесь: https://github.com/laravel/framework/commit/806fb79f6e06f794349aab5296904bc2ebe53963

    Итак, если вы используете L5.1 или 5.2, вы можете запустить composer update , и оно будет исправлено. Однако, если вы используете 5.0, кажется, что у него все еще есть эта ошибка, поэтому вы можете использовать метод setPath и попробовать это вместо этого:

     {!! $problems->setPath('')->appends(Request::except('page'))->render() !!}