localhost в настоящее время не может обработать этот запрос. ОШИБКА HTTP 500 с Laravel

Я пытаюсь отредактировать категорию в формате JSON с помощью метода PUT, поэтому я использую библиотеку guzzleHttp для анализа запросов и ответов json с помощью laravel 5.5.

Мои методы POST, GET работают нормально, когда я пытаюсь получить или вставить данные на свой сервер, но я получаю сообщение об ошибке в методе PUT & DELETE.

Я получаю два типа ошибок:

  1. localhost в настоящее время не может обработать этот запрос. ОШИБКА HTTP 500

  2. Недостаточно памяти - Фатальная ошибка: Недостаточно памяти (выделено 1472200704) (попытка выделить 176128 байт)

Ошибка консоли:

Эти ошибки возникают не вместе, а одна за другой, если я запрашиваю дважды подряд.

Я пытался изменить выделенную память, но это не сработало!

Вот мои процедуры для обработки запроса:

Мой контроллер :

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, это будет оценено по достоинству. И если здесь что-то неясно, предложите отредактировать.

Заранее спасибо !


person Fahim Uddin    schedule 13.10.2017    source источник
comment
URL-адрес обновления находится на вашем сервере?   -  person madalinivascu    schedule 13.10.2017
comment
URL-адрес обновления: rest-banai.herokuapp.com/categories/id, у меня есть установите base_uri клиента guzzle на rest-banai.herokuapp.com, а затем передайте категории/идентификатор для обновления   -  person Fahim Uddin    schedule 13.10.2017
comment
@madalinivascu, можете ли вы показать мне синтаксис этого в моей части $ request? это переменная заголовка или переменная тела?   -  person Fahim Uddin    schedule 13.10.2017


Ответы (2)


Измените свой запрос на

$request = $this->client->request('PUT', $url,['json'=> $data]);
person madalinivascu    schedule 13.10.2017
comment
Это не работает, пожалуйста, проверьте мои правки, возможно, есть проблемы с формой. - person Fahim Uddin; 13.10.2017
comment
что вы имеете в виду под не работает, какой результат вы получаете? - person madalinivascu; 13.10.2017
comment
Я все еще получаю сообщение об ошибке: localhost в настоящее время не может обработать этот запрос. ОШИБКА HTTP 500 - person Fahim Uddin; 13.10.2017
comment
так у тебя 2 сайта 1.rest-banai.herokuapp.com/categories/id и второй это сайт с видом и контроллером из вопроса,да? - person madalinivascu; 13.10.2017
comment
rest-banai.herokuapp.com/categories/id ‹ это просто сервер node.js, который я сделал для работы с базами данных в качестве resful-сервиса. и я разрабатываю веб-сайт на своем локальном хосте с представлением и контроллером - person Fahim Uddin; 13.10.2017
comment
что вы добавили для метода удаления? - person Fahim Uddin; 13.10.2017
comment
Давайте продолжим обсуждение в чате. - person Fahim Uddin; 13.10.2017

Вы используете находчивые маршруты, и все же у вас много сложностей в вашем коде. Это, откровенно говоря, на мой взгляд, совершенно ненужно. Я выполню то, что вы делаете, следующим образом:

Маршруты

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() !!}

```

person Raza Mehdi    schedule 16.10.2017
comment
Хорошо, можешь объяснить, в каких именно строках ты уменьшил сложность обработки запроса? Я вижу только, что вы обернули мои входные массивы в одну строку, и все. Тем не менее вы запрашиваете результат в репозиторий, а репозиторий запрашивает результат в GuzzleHttpRequest.php... и, к вашему сведению, я получаю ту же ошибку. - person Fahim Uddin; 16.10.2017
comment
Обратитесь к файлу laravel.log, чтобы узнать, какие ошибки возникают. - person Raza Mehdi; 16.10.2017
comment
Я использую этот подход для операций CRUD при использовании ресурсной маршрутизации. Жир более прост в реализации. - person Raza Mehdi; 16.10.2017