Laravel创建新文章后跳转对应页面报ArgumentCountError如何解决
问题修复方案
错误根因
你定义的ArticlesController的store方法多声明了一个不必要的$id参数:
- Laravel资源路由的
store动作对应的URI是/articles,没有路由参数,调用控制器方法时只会传入Request这1个参数 - 新文章还未创建时不存在ID,你想获取的新文章ID只能在执行创建操作后从返回的模型实例中获取
修复步骤
直接修改ArticlesController中的store方法即可,修改后代码如下:
public function store(Request $request) { $content = $request->validate([ 'title' => 'required|max:30', 'content' => 'required|min:10' ]); //限制只有透过登入才能CREATE文章,接收创建后返回的新文章实例 $article = auth()->user()->articles()->create($content); // 从新文章实例中获取ID实现跳转 return redirect('articles/'. $article->id)->with('notice', '文章發表成功!'); }
修改后无需调整路由或表单代码,直接运行即可实现创建文章后跳转至对应详情页的需求。
可选优化:跳转时推荐使用路由名生成链接,后续如果调整路由规则不用改控制器代码,写法如下:
return redirect()->route('articles.show', $article)->with('notice', '文章發表成功!');
内容的提问来源于stack exchange,提问作者Jay Feng
相关产品推荐
相关产品推荐

