localhost目前无法处理此请求。使用Laravel

时间:2017-10-13 11:17:34

标签: php json http laravel-5.5 guzzlehttp

我正在尝试使用PUT方法编辑JSON格式的类别,因此我使用guzzleHttp库来解析使用laravel 5.5的json请求和响应。

我的POST,当我试图抓取数据或将数据插入我的服务器时,GET方法正常工作,但我在PUT& DELETE方法。

我遇到两种类型的错误:

  1. localhost目前无法处理此请求。 HTTP ERROR 500

  2. Out of Memory - 致命错误:内存不足(已分配1472200704)(尝试分配176128字节)

  3. 控制台错误:

    如果我在行中请求两次,这些错误就不会一个接一个地出现。

    我试图更改已分配的内存,但它无效!

    以下是我处理请求的程序:

    我的控制器

    public function update(Request $request, $id)
    {
        // get the inputs
        $inputs = [
          "cat_id" => $id,
          "cat_name" => $request->input('cat_name'),
          "cat_slug" => $request->input('cat_slug'),
          "cat_description" => $request->input('cat_description'),
          "cat_parent_id" => $request->input('cat_parent_id')
        ];
    
        // post to the database
        $response = $this->categories->update($id, $inputs);
    
        if($response['success']){
          $message = $response['message'];
    
          Session::flash('success', 'Category is successfully saved !'.' Server Response Message : '.$message);
    
          return redirect()->route('categories.index');
        }else{
          $message = $response['message'];
    
          Session::flash('success', 'Category is not successfully saved !'.' Server Response Message : '.$message);
    
          return redirect()->route('categories.index');
        }
        /////////////////////////////////////////////////
    
        // If the edit page should be shown
        //return redirect()->route('categories.edit', $id);
    }
    

    我的存储库

    public function update($id, $category){
      return $this->update("categories/{$id}", $category);
    }
    

    和我的自定义GuzzleHttpRequest.php

    protected function update($url, $data){
    
      $formatted_data = json_encode($data);
    
      $request = $this->client->request('PUT', $url, [
        'body' => $formatted_data
      ]);
    
      $response = json_decode( $request->getBody()->getContents() , true );
    
      return $response;
    }
    

    我的服务器接受JSON格式的输入:https://rest-banai.herokuapp.com/

    已编辑:

    和我的编辑表格

    {!! Form::open(['route' => ['categories.update', $category['cat_id']], 'method' => 'PUT', 'data-parsley-validate' => '']) !!}
          <div class="form-group">
            {{ Form::label('cat_name', 'Name:') }}
            {{ Form::text('cat_name', $category['cat_name'], ['class' => 'form-control', 'placeholder' => 'Enter category name ...', 'required' => '', 'maxlength' => '50']) }}
          </div>
          <div class="form-group">
            {{ Form::label('cat_slug', 'Slug:') }}
            {{ Form::text('cat_slug', $category['cat_slug'], ['class' => 'form-control', 'placeholder' => 'Enter a slug word ...', 'required' => '', 'maxlength' => '50', 'data-parsley-type' => 'alphanum']) }}
          </div>
    
          <div class="form-group">
            {{ Form::label('cat_description', 'Description:') }}
            {{ Form::textarea('cat_description', $category['cat_description'], ['class' => 'form-control', 'rows' => '3', 'placeholder' => 'Enter description of the category ...', 'maxlength' => '255']) }}
          </div>
    
          <div class="form-group">
            {{ Form::label('cat_parent_id', 'Parent Category:') }}
            <br />
            {{ Form::select('cat_parent_id', $cat_array, null, ['placeholder' => $cat_parent_name]) }}
            <br />
          </div>
          <div class="pull-right">
            {{ Form::submit('SAVE', ['class' => 'btn btn-block btn-success btn-sm']) }}
          </div>
        {!! Form::close() !!}
    

    我不确定我在这里做错了什么,任何专家,请帮我解决这个问题,因为我是Guzzle和JSON与Laravel合作的新人,我们将不胜感激。 如果有任何不清楚的地方,请建议编辑。

    提前致谢!

2 个答案:

答案 0 :(得分:0)

将您的请求更改为

$request = $this->client->request('PUT', $url,['json'=> $data]);

答案 1 :(得分:0)

您正在使用资源丰富的路由,但您的代码中有很多复杂性。在我看来,这非常坦率,完全没必要。我会用以下方式完成你正在做的事情:

路线

Route::resource('category', 'CategoryController');

控制器

public function edit(Category $category)
{
    return view('category.edit', compact('category'));
}

public function update(Request $request, Category $category)
{
    try {
        $category->update($request->all()->except(['_token']));

        Session::flash('success', 'Category is successfully saved !');
    } catch(\Exception $exception) {
        Session::flash('error', 'Unable to update category!');    
    }

    return redirect(route('category.index'));
}

HTML

类别/ edit.blade.php

{!! Form::open(['route' => route('categories.update', $category), 'method' => 'PUT', 'data-parsley-validate' => '']) !!}
  <div class="form-group">
    {{ Form::label('cat_name', 'Name:') }}
    {{ Form::text('cat_name', $category->cat_name, ['class' => 'form-control', 'placeholder' => 'Enter category name ...', 'required' => '', 'maxlength' => '50']) }}
  </div>
  <div class="form-group">
    {{ Form::label('cat_slug', 'Slug:') }}
    {{ Form::text('cat_slug', $category->cat_slug, ['class' => 'form-control', 'placeholder' => 'Enter a slug word ...', 'required' => '', 'maxlength' => '50', 'data-parsley-type' => 'alphanum']) }}
  </div>

  <div class="form-group">
    {{ Form::label('cat_description', 'Description:') }}
    {{ Form::textarea('cat_description', $category->cat_description, ['class' => 'form-control', 'rows' => '3', 'placeholder' => 'Enter description of the category ...', 'maxlength' => '255']) }}
  </div>

  <div class="form-group">
    {{ Form::label('cat_parent_id', 'Parent Category:') }}
    <br />
    {{ Form::select('cat_parent_id', $cat_array, null, ['placeholder' => $cat_parent_name]) }}
    <br />
  </div>
  <div class="pull-right">
    {{ Form::submit('SAVE', ['class' => 'btn btn-block btn-success btn-sm']) }}
  </div>
{!! Form::close() !!}

```