Обновление данных с помощью коллективных форм Laravel

У меня есть форма редактирования с Laravel Collective, но при нажатии кнопки данные не обновляются. Ниже мои коды.

Форма:

{!! Form::model($post, ['route' => ['/post/update/', $post->id]]) !!}
    {{ method_field('PATCH') }}
    <div class="form-group">
        <div class="row">
            <div class="col-lg-6">
                {!! Form::label('title', 'Title') !!}
                {!! Form::text('title', null, ['class' => 'form-control']) !!}
            </div>
            <div class="col-lg-6">
                {!! Form::label('category_id', 'Category') !!}
                {!! Form::select('category_id', $categories, null, ['class' => 'form-control']) !!}
            </div>
        </div>
    </div>
    <div class="form-group">
        {!! Form::label('content', 'Content') !!}
        {!! Form::textarea('content', null, ['class' => 'form-control', 'rows' => 10]) !!}
    </div>
    <hr/>
    <div class="form-group">
        {!! Form::submit('Update', ['class' => 'btn btn-success pull-right']) !!}
    </div>
{!! Form::close() !!}

Контроллер:

public function edit($id)
{
    return \View::make('admin/post/edit')->with([
        'post' => \DB::table('posts')->find($id),
        'categories' => \App\Category::lists('category', 'id')
    ]);
}

public function update(Request $request, Post $post)
{
    $post->update($request->all());

    return \Redirect::to('/admin/posts');
}

Маршруты:

Route::get('/admin/post/edit/{id}', 'Admin\PostController@edit');
Route::patch('/post/update/', [
    'as' => '/post/update/',
    'uses' => 'Admin\PostController@update'
]);

Он немного отличается от Laracast, и меня это сбивает с толку. Фреймворк для меня в новинку, и отсутствие кода для каких-либо действий сбивает с толку.


person fermoga    schedule 01.03.2016    source источник
comment
Попробуйте изменить свой маршрут на: /post/update/{post} и проверьте, работает ли он   -  person Laerte    schedule 01.03.2016
comment
У вас есть ошибки?   -  person Dees Oomens    schedule 01.03.2016
comment
@Laerte Готово, но при отправке показала следующую ошибку: MassAssignmentException _token   -  person fermoga    schedule 01.03.2016
comment
@ Dees040 Нет, никаких ошибок.   -  person fermoga    schedule 01.03.2016
comment
'as' => '/post/update/' должно быть 'as' => 'post.update', это обычное соглашение в Laravel.   -  person user2094178    schedule 01.03.2016
comment
@ user2094178 Именование не имеет значения. И post.update, и post / update одинаковы.   -  person fermoga    schedule 01.03.2016
comment
Как я уже сказал, это обычное соглашение в Laravel.   -  person user2094178    schedule 02.03.2016


Ответы (1)


Я решил это. Массовое назначение. объясняет, что делать при использовании update или create

Итак, метод update:

public function update(Request $request, Post $post)
{
    $post->title = $request->title;
    $post->category_id = $request->category_id;
    $post->content = $request->content;
    $post->save();

    return \Redirect::to('/admin/posts');
}
person fermoga    schedule 01.03.2016