gpt4 book ai didi

php - Laravel 5 路由分页 url 编码问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:34:54 24 4
gpt4 key购买 nike

我构建了一个 laravel 5 应用程序,现在我正在测试它如何处理不同的输入。因此我遇到了一个奇怪的问题。在标题中,我有一个搜索字段。它返回按 10 分页的结果。

问题

如果用户输入一个字母,例如英文的“e”,一切正常。但是,当用户输入一个字母时,例如保加利亚语中的“e” - 结果的第一页正确显示,当用户点击第 2 页时,保加利亚语中“е”的搜索查询更改为“%D0” %B5”,不再显示结果。这是该网站的实际链接。 http://podobri.eu

我猜这与编码有关,但我看不出我做错了什么。

这是实际的代码

路线

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

搜索 Controller

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>

最佳答案

在我看来,您的问题正在发生,因为分页器在尾部附加斜杠和一些奇怪的重定向(不确定你们是否使用自定义 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() !!}

关于php - Laravel 5 路由分页 url 编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35212580/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com