我一直试图解决这个问题,因为两天但没有运气。我的ArticleController上有一个更新方法,负责更新数据库中的文章:
public function update(Article $articles, ArticleRequest $request){
$article = Article::findOrFail($articles);
$article->update($request->all());
return redirect('articles');
}
这是我的刀片文件,用于显示这些结果:
@extends('app')
@section ('content')
<div class="container">
<h1>Edit: {{$article->title}}</h1>
{!!Form::model($article,['method'=>'PATCH', 'action'=>['ArticleController@update', $article->id] ])!!}
@include('pages.partials', ['submitButtonText' => 'Edit Article'])
{!!Form::close()!!}
@include('errors.error')
</div>
@endsection
我收到错误文章var不存在。
答案 0 :(得分:1)
当您设置路径模型绑定时,Laravel将为您检索适当的模型实例并将其传递给您的控制器方法。在您的示例中,Article $articles
参数表示Article模型的实例 - 而不仅仅是id。因此,以下行是不必要的(因为您已经有适当的模型实例),并且不正确(因为findOrFail
期望将整数传递给它 - 而不是模型实例):
$article = Article::findOrFail($articles);
我会将您的控制器方法更改为:
public function update(Article $articles, ArticleRequest $request)
{
$articles->update($request->all());
return redirect('articles');
}
如果你仍然遇到麻烦,&#34;死亡和转储&#34;您的$articles
变量可确保正确设置路由模型绑定。