php - Laravel redirect()->action 不起作用并显示缺少的参数
问题描述
PHP 版本:7.2
Laravel 版本:6.2
我正在通过 laravel 逐篇做一个简单的项目。
当我遇到 redirect()->action 时,我对此有点困惑。我想通过 redirect()->action 传递一个名为 id 的变量,但它不起作用。
错误消息缺少 [Route: blog/post.show] [URI: blog/post/{post}] 的必需参数。
如果我删除变量名,只传递变量值就可以了。我阅读了手册,但仍然无法理解原因。你能帮我解释一下逻辑吗?谢谢你。下面是示例代码。
路由器.php
Route::group(['prefix' => 'blog',
'as' => 'blog/',
'namespace' => 'Blog'],
function(){
Route::resource('/post',"PostController");
});
PostController.php
创建新的博客文章(错误)
不明白为什么这不起作用?变量名($id) 是一样的。
public function store(Request $request)
{
$post = new BlogPost;
$post->title = $title;
$post->content = $content;
$post->save();
return redirect()->action(
'Blog\PostController@show', ['id' => $post->id]
);
}
创建新博文(正确)
public function store(Request $request)
{
$post = new BlogPost;
$post->title = $title;
$post->content = $content;
$post->save();
return redirect()->action(
'Blog\PostController@show', [$post->id]
);
//Or 'Blog\PostController@show', $post->id
}
显示新的博客文章
public function show($id)
{
$post = BlogPost::find($id);
if(! $post) {
abort(404);
}
$content = $post->content;
return view("blog.post", [
"title" => $post->title,
"content" => $content,
]);
}
谢谢
解决方案
您收到错误消息是因为您使用的是Resource Route
Route,它会自动将模型与 Route 绑定
有关更多信息,请参阅:https ://laravel.com/docs/6.x/routing#route-model-binding
推荐阅读
- c# - 当我添加一条记录时,如何防止显示数据库中的重复数据,所有以前的记录也显示
- javascript - 如何从 Telegram 组中获取用户总数并以简单的 html 文本显示这些统计信息?
- java - 如何将 JSP 文件转换为 Servlet 文件
- sql - 我正在尝试使用 SQL SELECT 语句创建查询
- android - 如何在zoom android sdk中以编程方式输入密码
- javascript - 在参数本身的默认函数参数中调用函数/方法?
- kotlin - Kotlin BuildType 'XYZ': id 'XYZ' is already used in BuildType(uuid='', id='XYZ', name='Deploy to envr') 错误
- javascript - 悬停时如何将各种元素添加到CSS?
- flutter - Flutter Group 布局
- android - 使用底部导航活动切换片段时发生重叠