Laravel 8视图数组转字符串错误及路由参数缺失问题求助
问题分析与解决办法
咱们一步步拆解你遇到的问题,逐个解决:
1. 初始「Array to string conversion」错误原因
你最初的代码里调用route()函数时,错误地用**点号(.)**拼接路由名和参数数组:
<form action="{{ route('articles.destroy' . ['id' => $article->id]) }}" method="POST">
在PHP里,字符串和数组用.拼接时,数组会被强制转成字符串(结果就是Array),这直接触发了「Array to string conversion」错误。route()函数的正确用法是:第一个参数传路由名字符串,第二个参数传参数数组,两者用逗号分隔,而非点号。
2. 后续「UrlGenerationException」错误原因
你修正了destroy路由的拼接方式,但还有两个明显问题:
articles.edit的路由名写错了:你写的是route('$articles.edit' . ['id' => $article->id]),这里多了个多余的$符号,正确路由名是articles.edit;- Laravel的
resource路由生成的参数名和资源名一致(比如你的资源是articles,路由占位符就是{article}),而不是id。所以传递参数时必须用['article' => $article->id],如果传['id' => ...],Laravel找不到匹配的路由参数,就会抛出「Missing required parameters」错误。
修正后的完整代码
把你的blade视图表单代码改成下面这样:
<form action="{{ route('articles.destroy', ['article' => $article->id]) }}" method="POST"> {{ method_field('delete') }} {{ csrf_field() }} <div class="btn-group btn-group-xs"> <a href="{{ route('articles.edit', ['article' => $article->id]) }}" class="btn btn-primary">Edit</a> <button type="submit" class="btn btn-danger">حدف</button> </div> </form>
另外给你个小优化:Laravel 8+版本支持更简洁的语法替代method_field和csrf_field,替换后代码更清爽:
<form action="{{ route('articles.destroy', ['article' => $article->id]) }}" method="POST"> @method('DELETE') @csrf <div class="btn-group btn-group-xs"> <a href="{{ route('articles.edit', ['article' => $article->id]) }}" class="btn btn-primary">Edit</a> <button type="submit" class="btn btn-danger">حدف</button> </div> </form>
这样就能解决你碰到的两个错误啦~
内容的提问来源于stack exchange,提问作者user9259038
相关产品推荐
相关产品推荐

