在用户页面上创建分页时,分页链接不正确,它们在/ = page = 1之前,因此链接重定向到root,找不到404。
控制器方法:
public function getRegister()
{
$users = User::where("admin", 0)->paginate(3);
return view('auth.register', compact('users'));
}
视图
<?php echo $users->render(); ?>
用户页面网址:http://localhost:8080/pal/public/agent/create
分页链接:http://localhost:8080/pal/public/agent/create/?page=1
点击分页链接时,浏览器会将我重定向到:http://localhost:8080/agent/create?page=3并获得404页面未找到
答案 0 :(得分:20)
不幸的是,至少就目前而言,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);
}
接下来在您的视图中,只需调用render(),它应该按预期工作。
或2)在控制器中修改任何内容但在视图中更改链接格式,例如:
{!! str_replace('/?', '?', $users->render()) !!}
您可以参考我之前提出的question。
希望这有帮助!
我仍然在寻找更优雅的解决方案,但还没有找到:(
于2016-05-30更新
感谢所有的选票。请注意,在Laravel 5.2中,您不必再以上述方式破解代码了!在视图中调用render()就是您需要做的。那很好,不是吗?
答案 1 :(得分:3)
我喜欢卡特的回答,我更喜欢第一个使用setPath的建议。设置&#34; setPath&#34;一个空字符串为我工作。 :)
$users->setPath('');
答案 2 :(得分:0)
这里最好的方法(无需更改代码)是将.htacces文件修改为:
RewriteEngine On
RewriteBase /pal/public/
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ $1 [L,R=301] <-- removed "/" before $1
这种方式(没有此代码段中的注释)应该正确呈现分页链接。
答案 3 :(得分:0)
添加卡特建议:
public function getRegister()
{
$users = User::where('admin',0)->paginate(3);
$users->setPath('your/custom/path');
return view('your/view')->with('users',$users);
}
添加'url()'并将其与路径连接起来。例如'/ admin / user / list'
$users->setPath(url() . '<route>');