php - 从路由 Laravel 将参数 {id} 粘贴到控制器中
问题描述
我有一条路线:
Route::get('/{id?}/{post}', 'PostController@show')->name('postshow');
我可以{id}
从控制器粘贴参数吗?
public function showPost($id = null, Post $post)
{
$id = $post->id;
return view('post.show', compact('post'));
}
我需要当用户发帖时,我需要的帖子网址是:http://example.com/12345/post-slug
现在我得到:http://example.com/post-slug
我知道我可以在路由中传递 id:route('postshow', [$post->id, $post]);
但我不能,因为在刀片中我有 1000 多条这样的记录:route('postshow', $post);
并且搜索和编辑每个刀片文件我不能。
解决方案
根据您的以下路线:
Route::get('/{id?}/{slug}', 'PostController@show')->name('postshow');
在控制器中(不确定你想要它,但根据我对你问题的理解:
public function showPost($id = null, $slug)
{
if($id){
$post = Post::findOrFail($id);
}
else{
$post = Post::where('slug', $slug)->firstOrFail();
}
return view('post.show', compact('post'));
}
在刀片中,如果要生成此 url:
route('postshow', [ 'id' => $post->id, , 'slug' => $post->slug]);
推荐阅读
- nginx - 浏览器无法连接 Flask-socketio 服务器
- python - Python 文件读/写 - 附加错误的文本
- java - 使用 com.fasterxml.jackson.databind.ObjectMapper 在序列化/反序列化 JSON 内容期间从异常日志中删除敏感数据
- javascript - 单击按钮时如何编辑li的内容JavaScript?
- amazon-cloudwatch - 大使 API 网关 Cloudwatch 集成
- python - Google foobar gearing_up_for_destruction 挑战
- amazon-web-services - AWS 全球服务
- java - Gson 初始化新变量
- javascript - 如何只初始化一次 nouislider?noUISlider — `未捕获的错误:滑块已初始化`
- java-8 - 在一个管道中链接两个可为空的 Optional