如何从PUT方法传递数据

问题描述 投票:2回答:4

我正在为Laravel创建一个API。我使用PUT方法更新数据。

我使用PUT方法向Postman发送数据。在我的控制器中,我得到一个空数组。如何访问传递的数据?

在我的路线中,我有:

Route::put('vehicletypes/{id}','API\VehicletypeController@update');

在我的控制器中:

public function update(Request $request, $id){

print_r($request->all()); exit;

}

enter image description here

如何获取PUT方法传递的数据?

php laravel laravel-5 laravel-5.3 laravel-5.4
4个回答
4
投票

你得到空的回应,因为PHP对PUT有一些安全限制。但是Laravel有一个解决方法。 所以,要解决这个问题,你必须发送一个来自Postman的POST请求,而POST param __method的值为PUT。它应该工作。


2
投票

Laravel作弊因为html表单只支持GET和POST,但它确实理解真正的PUT / PATCH请求。

问题看起来像Symfony,如果它是multipart / form-data,它无法解析数据,作为使用x-www-form-urlencoded内容处置的替代尝试。


1
投票
public function putUpdate(Request $request, $id){

print_r($request->all()); exit;

}

并改变路线,

Route::put('vehicletypes/{id}','API\VehicletypeController@putUpdate');

0
投票

为什么没有人在第一次放置方法领域给出明确的解释

{{method_field('put')}}

因为您的路由器uri是使用命令显示的

php artisan router:list

更新方法是put / patch所以先添加

{{method_field('put')}}

你表单中的字段应该是相同的

<form action="{{route('posts.update',$post->id)}}" method="post">

添加csrf_toke表单后将正常工作。最终的形状如下。

<form action="{{route('posts.update',$post->id)}}" method="post" >
  {{method_field('put')}}
          <input type="hidden" name="_token" value="{{csrf_token()}}">
            <!-- Name input-->
            <div class="form-group">
              <label class="col-md-3 control-label" for="name">Title</label>
              <div class="col-md-9">
                <input id="name" name="title" type="text" value="{{$post->title}}" class="form-control">
              </div>
            </div>          


    <!-- Message body -->
    <div class="form-group">
      <label class="col-md-3 control-label" for="body">
      Body</label><br>
      <div class="col-md-9">
    <textarea class="form-control" id="message" name="body" rows="5">
    {{$post->body}}
    </textarea>
      </div>
    </div>    
    <!-- Form actions -->
    <div class="form-group">
      <div class="col-md-9 text-right col-md-offset-3">
        <button type="submit" class="btn btn-success btn-lg">Update</button>
        <a href="{{Route('posts.index')}}" type="button" class="btn btn-primary btn-lg">Cancel</a>
      </div>
    </div>         
  </form>
© www.soinside.com 2019 - 2024. All rights reserved.