2015-12-03 7 views
0

Я пытаюсь редактировать и обновлять данные в laravel, но это исключает исключение MethodNotAllowedHttpException in RouteCollection.php line 219: Я видел, как другие люди спрашивали о той же проблеме, но я не могу понять с их точки зрения, я смотреть учебники и делать шаг за шагом, я сделал некоторые исследования по моей собственной, но я новичок в PHP и рамки мира, так застрял сейчас здесь маршрут код:Не удалось обновить данные в laravel 5.1

Route::get('aboutus', ['as' => 'about', 'uses' => '[email protected]']); 
Route::get('authors', array('as' => 'authors', 'uses' => '[email protected]_index')); 
Route::get('authors/new', array('as' => 'new_author', 'uses' => '[email protected]_new')); 
Route::get('authors/{id}', array('as' => 'authorRoute', 'uses' => '[email protected]_view')); 
Route::post('authors/authorsWithData', array('as' => 'authorsWithData', 'uses' => '[email protected]')); 
Route::get('authors/{id}/edit', array('uses' => '[email protected]')); 
Route::post('authors/{id}/update', array('uses' => '[email protected]')); 

код контроллера:

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() !!}   

ответ

1

Ваш маршрут должен принимать запрос PATCH, а не запрос POST.

Это ваша форма:

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

Вы указали, что method равно PATCH. Таким образом, в вашем соответствующем маршруте, вы должны соответствовать:

Старый маршрут:

Route::post('authors/{id}/update', array('uses' => '[email protected]')); 

Новый маршрут:

Route::patch('authors/{id}/update', array('uses' => '[email protected]')); 
0

Просто переключите порядок параметров в функции update.

+0

и означает обновление функции ($ ID, CreateAuthorRequest $ запрос) к (CreateAuthorRequest $ request, $ id), это не сработало, я просто попробовал – mohsin

Смежные вопросы