【问题标题】:Deleting or Updating posts in LARAVEL using controller使用控制器删除或更新 LARAVEL 中的帖子
【发布时间】:2023-03-22 19:36:01
【问题描述】:
{!! 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') }} 来更新我的帖子,因为没有其他方法。有没有更好的办法?

这是我的控制器(postcontroller):

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');
}

【问题讨论】:

  • 我不太明白这个问题/问题
  • 'method'=&gt;'POST' in Form::open - 不应该是method'=&gt;'PUT'吗?不太确定这里问的是什么。
  • 您可以使用 put 代替 post。 Form::open(['url' => 'foo/bar', 'method' => 'put'])

标签: php html laravel forms http-put


【解决方案1】:

这是使用 UPDATE 表单的默认且正确的方式。您必须在表单方法中使用 POST 并在表单中使用 PUT 作为请求参数(隐藏)。

您在这里错过的是表单中的 CSRF 令牌,它可以通过多种方式使用,例如:

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

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

{!! csrf_field() !!}

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

同样,您可以将 PUT 用作:

@method('PUT')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    • 2020-07-04
    • 2021-08-20
    • 2017-10-30
    • 2021-12-08
    • 1970-01-01
    相关资源
    最近更新 更多