UrlGenerationException:缺少 [Route: topics.update] [URI: topics/{topic}] 所需的参数
UrlGenerationException: Missing required parameters for [Route: topics.update] [URI: topics/{topic}]
我收到此错误:
Missing required parameters for [Route: topics.update] [URI: topics/{topic}]. (View: C:\xampp\htdocs\phpboards\resources\views\topics\edit.blade.php)
这是link,将带用户编辑:
<a href="/boards/topics/edit/{{$topic->id}}" class="btn btn-default">Edit</a>
这是编辑控制器:
$topic = Topic::find($id);
return view('topics.edit')->with('topic', $topic);
这是路线:
Route::get('/boards/topics/edit/{id}', 'TopicController@edit');
这是编辑表格:
<div class="container">
{!! Form::open(['action' => 'TopicController@update', 'method' => 'POST']) !!}
<div class="form-group">
{{ Form::label('title', 'Title') }}
{{ Form::text('title', $topic->topic_title, ['class' => 'form-control', 'placeholder' => 'Title of the Post']) }}
</div>
<div class="form-group">
{{ Form::label('desc', 'Desc') }}
{{ Form::textarea('desc', $topic->topic_body, ['class' => 'form-control', 'placeholder' => 'Description of the Post']) }}
</div>
{{ Form::submit('Submit', ['class' => 'btn btn-default']) }}
{!! Form::close() !!}
</div>
我哪里做错了??
让我们承认您的 update()
方法已经在您的 TopicController 上实现了。
首先您需要声明另一条路线:
Route::put('/boards/topics/edit/{id}', 'TopicController@update');
// ^^^
然后通过以下方式更改您的表格开头:
{!! Form::open(['action' => ['TopicController@update', $topic->id], 'method' => 'put']) !!}
// ^^^^^^^^^^ ^^^
应该可以。
而不是:
{!! Form::open(['action' => 'TopicController@update', 'method' => 'POST']) !!}
使用
{!! Form::open(['url' => route('topics.update', $topic->id), 'method' => 'POST']) !!}
因为对于您的路由,您需要传递要更新的主题的 ID。此外,使用 named routes 而不是 Controller@method 表示法更合理。
我收到此错误:
Missing required parameters for [Route: topics.update] [URI: topics/{topic}]. (View: C:\xampp\htdocs\phpboards\resources\views\topics\edit.blade.php)
这是link,将带用户编辑:
<a href="/boards/topics/edit/{{$topic->id}}" class="btn btn-default">Edit</a>
这是编辑控制器:
$topic = Topic::find($id);
return view('topics.edit')->with('topic', $topic);
这是路线:
Route::get('/boards/topics/edit/{id}', 'TopicController@edit');
这是编辑表格:
<div class="container">
{!! Form::open(['action' => 'TopicController@update', 'method' => 'POST']) !!}
<div class="form-group">
{{ Form::label('title', 'Title') }}
{{ Form::text('title', $topic->topic_title, ['class' => 'form-control', 'placeholder' => 'Title of the Post']) }}
</div>
<div class="form-group">
{{ Form::label('desc', 'Desc') }}
{{ Form::textarea('desc', $topic->topic_body, ['class' => 'form-control', 'placeholder' => 'Description of the Post']) }}
</div>
{{ Form::submit('Submit', ['class' => 'btn btn-default']) }}
{!! Form::close() !!}
</div>
我哪里做错了??
让我们承认您的 update()
方法已经在您的 TopicController 上实现了。
首先您需要声明另一条路线:
Route::put('/boards/topics/edit/{id}', 'TopicController@update');
// ^^^
然后通过以下方式更改您的表格开头:
{!! Form::open(['action' => ['TopicController@update', $topic->id], 'method' => 'put']) !!}
// ^^^^^^^^^^ ^^^
应该可以。
而不是:
{!! Form::open(['action' => 'TopicController@update', 'method' => 'POST']) !!}
使用
{!! Form::open(['url' => route('topics.update', $topic->id), 'method' => 'POST']) !!}
因为对于您的路由,您需要传递要更新的主题的 ID。此外,使用 named routes 而不是 Controller@method 表示法更合理。