路由模型绑定在Laravel上不起作用
两天以来,我一直在努力解决这个问题,但运气不好。我的ArticleController上有一个更新方法,负责更新数据库中的文章:路由模型绑定在Laravel上不起作用,laravel,Laravel,两天以来,我一直在努力解决这个问题,但运气不好。我的ArticleController上有一个更新方法,负责更新数据库中的文章: public function update(Article $articles, ArticleRequest $request){ $article = Article::findOrFail($articles); $article->update($request->all()); return redirect('
public function update(Article $articles, ArticleRequest $request){
$article = Article::findOrFail($articles);
$article->update($request->all());
return redirect('articles');
}
以下是我的blade文件以显示这些结果:
@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
@extends('app')
@节(“内容”)
编辑:{{$article->title}
{!!Form::model($article,['method'=>'PATCH','action'=>['ArticleController@update“,$article->id]])
@包括('pages.partials',['submitButtonText'=>'编辑文章']))
{!!Form::close()!!}
@包括('errors.error')
@端部
我得到一个错误,文章var不存在 设置路由模型绑定时,幕后的Laravel会为您检索适当的模型实例,并将其传递到控制器方法中。在您的示例中,
Article$articles
参数表示文章模型的一个实例,而不仅仅是id。因此,以下行既不必要(因为您已经有了相应的模型实例),也不正确(因为findOrFail
希望向其传递一个整数,而不是模型实例):
我将您的控制器方法更改为:
public function update(Article $articles, ArticleRequest $request)
{
$articles->update($request->all());
return redirect('articles');
}
如果您在这方面仍然有问题,请“死并转储”您的
$articles
变量,以确保正确设置了路由模型绑定。是否可以删除$article=article::findOrFail($articles);
public function update(Article $articles, ArticleRequest $request)
{
$articles->update($request->all());
return redirect('articles');
}