Удаление или обновление сообщений в LARAVEL с помощью контроллера - PullRequest
0 голосов
/ 05 сентября 2018
{!! Form::open(['action'=>['PostsController@update',$post->id],'method'=>'POST']) !!}
        <div class="form-group">
            {{Form::label('title', 'Title')}}
            {{Form::text('title', $post->title,['class'=>'form- 
           control','placeholder'=>'Title'])}}
        </div>
        <div class="form-group">
            {{Form::label('body', 'Body')}}
            {{Form::textarea('body', $post->body,['id'=>'article 
            ckeditor','class'=>'form-control','placeholder'=>'Body Text'])}}
        </div>
        {{Form::hidden('_method','PUT')}}
        {{Form::submit('Update',['class'=>'btn btn-success'])}}
{!! Form::close() !!}

Я использую это {{ Form::hidden('_method','PUT') }}, чтобы обновить мой пост, потому что другого пути нет. Есть ли лучший способ или нет?

Вот мой контроллер (постконтроллер):

public function update(Request $request, $id)
{
    $this->validate($request,[
        'title' => 'required',
        'body' => 'required'
    ]);

    $post = Post::find($id);

    $post->title = $request->title;
    $post->body = $request->body;

    $post->save();

    return redirect('/posts')->with('success','Post Updated Sucessfully');
}

1 Ответ

0 голосов
/ 05 сентября 2018

Это стандартный и правильный способ использования формы ОБНОВЛЕНИЕ. Вы должны использовать POST в методе формы и PUT как параметр запроса (скрытый) для формы.

Здесь вы пропустили токен CSRF в форме, который можно использовать несколькими способами:

{!! Form::token() !!}

{!! Form::hidden('_token', Session::token()) !!}

{!! csrf_field() !!}

@csrf <!-- since Laravel 5.6 -->

Аналогично, вы можете использовать PUT как:

@method('PUT')
...