Laravel 5 路由分页 url 编码问题

2023-11-29

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

问题

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

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

这是实际的代码

Route

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

搜索控制器

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".'" в системата на Подобри');
    }

View

        @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() !!}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 5 路由分页 url 编码问题 的相关文章

随机推荐

  • Android:AsyncTask 的处理程序

    我将 AsyncTask 与 ProgressDialog 结合使用 查看我的代码 我在 onPostExecute 中遇到问题 如果任务是第一次运行 它会在handleMessage 中收到progressDialog 的Null Poi
  • 反转 pandas 中的 get_dummies 编码

    列名称为 ID 1 2 3 4 5 6 7 8 9 col 值为 0 或 1 我的数据框如下所示 ID 1 2 3 4 5 6 7 8 9 1002 0 1 0 1 0 0 0 0 0 1003 0 0 0 0 0 0 0 0 0 1004
  • SignalR(v2.2.0) OnDisconnected 设置用户离线

    我使用以下代码在组中添加用户 并使用以下代码将用户保存在该特定组的数据库中 SERVER public class ChatHub Hub public async Task JoinRoom string user Id string r
  • 将小数转换为任何基数? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我知道 strtoll 但它将任何基数基数 2 到 36 之间 转换为十进制 我需要通过将十进制转换为任何基数基数来执行相反的操作 一个例子是十进制 130 基数 12 AA 以下代
  • 如何在 Python 中根据 DTD 文件验证 xml

    我需要验证 XML 字符串 而不是文件 针对 DTD 描述文件 这怎么能在python 另一个不错的选择是lxml的验证我觉得用起来很愉快 取自 lxml 站点的一个简单示例 from StringIO import StringIO fr
  • 在 WAMP PHP Google+ 项目中安装 Composer,PHP 无法识别

    我正在关注这个 PHP Google 教程我正在尝试在我的 WAMP 目录中安装作曲家 C wamp www gplus quickstart php gt curl s https getcomposer org installer ph
  • 更改 WiFi MAC 地址 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我是致力于该项目的开发人员之一薮猫项目我们正在考虑使用华为创意U1850作为我们Android开发的默认平台 活动 我们从当地经销商之一购买了几部手机 在澳大利亚这里 我们注意到 我
  • 为什么Java中每次long和double都工作时会有这么多类型的数字?

    现在我一直在尝试学习Java编程 我想知道为什么我们使用这样的东西Float short and int当我们可以只是使用Long and Double 我不明白那部分 很好的问题 特别是如果你来自这样的语言JavaScript它不区分数字
  • 如何在 SeekBar 上显示最大值和最小值?

    我正在尝试做的事情 我想实施一个SeekBar在 Android 应用程序中SeekBar我还想显示最大值和最小值 最小值始终为 0 但最大值取决于剪辑长度 例如 0 180 有没有办法显示用户移动时选择的值 在搜索栏本身上 SeekBar
  • Visual Studio Code 更新后,HTML 文件中的智能 Javascript 建议不再起作用

    我使用 Visual Studio Code 已有几个月了 我已经习惯了里面的聪明建议
  • 为什么Java程序需要“main()”方法?

    这只是一个命名约定 为什么从 shell 执行程序时不能调用任何方法 例如 gt java myPackage MyClass myOwnEntryPoint String str 是的 这是一个命名约定 继承自C 这样做的好处是 只需查看
  • 为 Seq2Seq 模型添加注意力层

    我已经构建了编码器 解码器的 Seq2Seq 模型 我想为其添加一个注意力层 我尝试添加注意力层通过这个但这没有帮助 这是我最初的代码 没有注意 Encoder encoder inputs Input shape None enc emb
  • LESS 使用类名声明变量?

    我有一个为元素设置填充等的按钮类 后面跟着一个定义背景颜色的类 button padding 0 5em 1em text transform uppercase color fff green background green decla
  • Rails3 与 SQL Server 2000 对话-----ActiveRecord::JDBCError: 'ROW_NUMBER' 不是可识别的函数名称

    一个简单的 Rails 3 应用程序尝试使用 activerecord jdbc adapter 与 SQL Server 2000 进行通信 我尝试了 microsoft jdbc 驱动程序和 jtds 驱动程序 似乎连接数据库正常 当需
  • 如何查看X++ select语句的SQL表达式?

    我在 AX 的一份工作中有以下声明 select RecId from pjiTable join pID Type PrId from sjTable where pjiTable Prid sjTable PrId sjTable Ty
  • Ember、mixin 来检测视图/组件之外的点击

    我正在编写一个 Mixin 来处理用户在视图 组件之外单击时的情况 这是混合 App ClickElsewhereMixin Ember Mixin create onClickElsewhere Ember K didRender fun
  • 重复 cookie 查询或存储在视图状态中?哪个是更好的做法?

    我有一个用户登录的内部网站 该数据被保存为 cookie 从那里 用户继续他们的快乐之路 应用程序经常会查询身份验证记录以确定用户拥有哪些权限 我的问题是 在需要时查询 cookie 来获取用户数据 还是将用户信息保存在 viewstate
  • 使用 SearchView 实现自定义搜索

    我想在我的应用程序中实现搜索 但我不想使用单独的活动来显示我的搜索结果 相反 我只想使用显示在下方的建议列表SearchView 我可以用setOnQueryTextListener on the SearchView 聆听输入并搜索结果
  • Rails 4:heroku 基本计划上的 ConnectionTimeoutError

    我们正在研究一个简单的 Rails 4 网络应用程序 由 Heroku 托管 免费计划 最近 我们正在经历一些ActiveRecord ConnectionTimeoutError 每隔几天就会发生一次 我们并不真正了解其背后的原因 您可能
  • Laravel 5 路由分页 url 编码问题

    我构建了一个 Laravel 5 应用程序 现在正在测试它如何处理不同的输入 因此我遇到了一个奇怪的问题 在标题中我有一个搜索字段 它返回结果 按 10 分页 问题 如果用户输入一个字母 例如英语中的 e 一切都会正常 但是 当用户输入字母