laravel 5中的分页产生错误的链接

Aym*_*ein 4 laravel laravel-5

在用户页面上创建分页时,分页链接不正确它们在/ = page = 1之前,因此链接重定向到root,找不到404.

控制器方法:

public function getRegister()
{
    $users = User::where("admin", 0)->paginate(3);

    return view('auth.register', compact('users'));
} 
Run Code Online (Sandbox Code Playgroud)

视图

<?php echo $users->render(); ?>
Run Code Online (Sandbox Code Playgroud)

用户页面网址:http:// localhost:8080/pal/public/agent/create

分页链接:http:// localhost:8080/pal/public/agent/create /?page = 1

点击分页链接时,浏览器会将我重定向到:http:// localhost:8080/agent/create?page = 3并获得404页面未找到

Car*_*ter 21

不幸的是,至少就目前来说,Laravel 5是如何工作的.

要删除那个额外的斜杠,你必须在渲染之前手动处理分页链接.

您可以:1)在您的控制器中,在paginator实例上调用setPath(),如下所示:

public function getRegister()
{
    $users = User::where('admin',0)->paginate(3);
    $users->setPath('your/custom/path');
    return view('your/view')->with('users',$users);
}
Run Code Online (Sandbox Code Playgroud)

接下来在您的视图中,只需调用render(),它应该按预期工作.

或2)在控制器中修改任何内容但在视图中更改链接格式,例如:

{!! str_replace('/?', '?', $users->render()) !!}
Run Code Online (Sandbox Code Playgroud)

你可以参考我之前提出的问题.

希望这可以帮助!


我仍在寻找更优雅的解决方案,但尚未得到任何:(


更新于2016-05-30

感谢所有的选票.请注意,在Laravel 5.2中,您不必再以上述方式破解代码了!在视图中调用render()就是您需要做的.那很好,不是吗?


Wre*_*cks 5

我喜欢卡特的回答,我更喜欢使用 setPath 的第一个建议。将“setPath”设置为空字符串对我有用。:)

$users->setPath('');
Run Code Online (Sandbox Code Playgroud)