路线模型绑定不适用于Laravel

时间:2017-06-09 15:14:39

标签: laravel

我一直试图解决这个问题,因为两天但没有运气。我的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不存在。

1 个答案:

答案 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变量可确保正确设置路由模型绑定。