UrlGenerationException:缺少[Route:topics.update] [URI:topics / {topic}]所需的参数

问题描述 投票:0回答:2

我收到这个错误:

Missing required parameters for [Route: topics.update] [URI: topics/{topic}]. (View: C:\xampp\htdocs\phpboards\resources\views\topics\edit.blade.php)

这是用户编辑的链接:

<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>

我在这做错了什么?

laravel laravel-5 laravel-routing laravelcollective laravel-form
2个回答
1
投票

代替:

{!! Form::open(['action' => 'TopicController@update', 'method' => 'POST']) !!}

使用

{!! Form::open(['url' => route('topics.update', $topic->id), 'method' => 'POST']) !!}

因为对于您的路线,您需要传递要更新的主题的ID。使用named routes代替Controller @ method表示法更合理。


1
投票

让我们承认你的update()方法已经在你的TopicController上实现了。

首先,您需要声明另一条路线:

Route::put('/boards/topics/edit/{id}', 'TopicController@update');
//     ^^^

然后改变你的表格开头:

{!! Form::open(['action' => ['TopicController@update', $topic->id], 'method' => 'put']) !!}
//                                                     ^^^^^^^^^^                ^^^

它应该工作。

© www.soinside.com 2019 - 2024. All rights reserved.