php - 我无法获得完整的 slug/post 路线
问题描述
我正在尝试创建一个博客,当尝试显示上一条记录和下一条记录时,这将返回“帖子”,而不是应该是 / single / {slug} 的完整路径
控制器
public function single($slug)
{
$post = Post::where('slug', $slug)->first();
$previous = Post::where('id', '<', $post->id)->orderBy('id', 'asc')->where('status', 'PUBLISHED')->first();
$next = Post::where('id', '>', $post->id)->orderBy('id')->where('status', 'PUBLISHED')->first();
return view('web.single')->with(compact('post', 'previous', 'next'));
}
看法
@if (isset($previous))
<div class="alert alert-success">
<a href="{{ url($previous->slug) }}">
<div class="btn-content">
<div class="btn-content-title"><i class="fa fa-arrow-left"></i> Previous Post</div>
<p class="btn-content-subtitle">{{ $previous->title }}</p>
</div>
</a>
</div>
@endif
</div>
<div class="col-md-6">
@if (isset($next))
<div class="alert alert-success">
<a href="{{ url($next->slug) }}">
<div class="btn-content">
<div class="btn-content-title">Next Post <i class="fa fa-arrow-right"></i></div>
<p class="btn-content-subtitle">{{ $next->title }}</p>
</div>
</a>
</div>
@endif
路线
Route::get('/single/{slug}', 'Web\WorkController@single')->name('single');
点击上一个或下一个时,浏览器显示的路由是http://127.0.0.1:8000/et-autem-tempora ,应该是 http://127.0.0.1:8000/single/et-autem-tempora
解决方案
您正在创建您的网址:
<a href="{{ url($next->slug) }}">
...
</a>
url('path')
助手返回如下内容: http://{base_url}/{path}
.
尝试改用您的命名路线:
<a href="{{ route('single', ['slug' => $next->slug]) }}">
...
</a>
我认为这也应该有效:
<a href="{{ route('single', $next->slug) }}">
...
</a>
推荐阅读
- kubernetes - 如何在 EKS Fargate 中使用 Fluentbit 设置自定义日志记录?
- spring-boot - 如何在 yaml 中指定默认的 pessimistic_write 锁定超时?
- sql - 如何分解表以获得最佳查询
- asp.net - ASP.NET 中内置身份验证的控制器和视图在哪里?
- rust - 从 mut ref 创建的指针上过度激进的 noalias?
- google-apps-script - 如何在多张 Google 工作表上运行脚本
- graphql - 有没有办法使 GraphQLObjectType 的字段动态/非必需,以便接收动态键值对
- reactjs - 与 TS 反应 - 无法从窗口导出 Redux Devtools
- reactjs - 如何通过按钮从一个组件解析数据到另一个组件
- javascript - 如果我在函数内或函数调用周围围绕代码包装 Try/Catch 是否重要?