代码之家  ›  专栏  ›  技术社区  ›  Deepak Rawat

UrlGenerationException:[路由:主题.更新][URI:主题/{主题}]缺少必需的参数

  •  0
  • Deepak Rawat  · 技术社区  · 7 年前

    我收到以下错误:

    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>
    

    我做错了什么??

    2 回复  |  直到 7 年前
        1
  •  2
  •   Marcin Nabiałek    7 年前

    而不是:

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

    使用

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

    因为对于您的路由,您需要传递要更新的主题的id。而且使用更合理 named routes 相反Controller@method符号

        2
  •  1
  •   Drilon Srqn    7 年前

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

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

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

    然后通过以下方式更改表单打开:

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

    它应该会起作用。