无法更新laravel 5.1中的数据

时间:2015-12-03 07:15:05

标签: php laravel laravel-5.1

我正在尝试编辑和更新laravel中的数据,但它正在抛出异常MethodNotAllowedHttpException in RouteCollection.php line 219:我看到其他人提出同样的问题,但我无法从他们的角度理解,我正在观看教程和做一步一步,我已经做了一些自己的研究,但我对php和框架世界很新,所以现在卡住了,  这是路线代码:

Route::get('aboutus', ['as' => 'about', 'uses' => 'PagesController@about']);
Route::get('authors', array('as' => 'authors', 'uses' => 'authors_controller@get_index'));
Route::get('authors/new', array('as' => 'new_author', 'uses' => 'authors_controller@get_new'));
Route::get('authors/{id}', array('as' => 'authorRoute', 'uses' => 'authors_controller@get_view'));
Route::post('authors/authorsWithData', array('as' => 'authorsWithData', 'uses' => 'authors_controller@store'));
Route::get('authors/{id}/edit', array('uses' => 'authors_controller@edit'));
Route::post('authors/{id}/update', array('uses' => 'authors_controller@update'));

控制器代码:

public function update($id, CreateAuthorRequest $request){
    $author = author::find($id);
    $author->update($request->all());
    return view('authors.view');
}

edit.blade.php代码:

        {!! Form::model($author, ['method'=> 'PATCH', 'url' => ['authors/' . 
        $author->id . '/update']]) !!}

    {!! Form::label('name', 'Name:', ['id' => 'labelId']) !!}
    {!! Form::text('name', Input::old('name'), '' 
    , ['id' => 'nameId', 'placeholder' => 'name goes here']) !!}

    <p>
        {!! Form::label('bio', 'Biography:') !!}<br />
        {!! Form::textarea('bio', Input::old('name')) !!}
    </p>    

    <p> {!! Form::submit('Add Author') !!}</p> 

    {!! Form::close() !!}        

2 个答案:

答案 0 :(得分:1)

您的路线应该接受PATCH请求,而不是POST请求。

这是你的表格:

{!! Form::model($author, ['method'=> 'PATCH', 'url' => ['authors/' . 
    $author->id . '/update']]) !!}

您指定method等于PATCH。因此,在相应的路线中,您需要匹配:

旧路线:

Route::post('authors/{id}/update', array('uses' => 'authors_controller@update'));

新路线:

Route::patch('authors/{id}/update', array('uses' => 'authors_controller@update'));

答案 1 :(得分:0)

只需在update函数中切换参数的顺序。