cakephp 3 ошибки возврата возвращаются как html CrudJsonApi - PullRequest
0 голосов
/ 02 июля 2018

Я добавляю REST API в существующую кодовую базу cakephp.

Это работает, как я ожидаю. Я нажимаю / api / v1 / contacts / 12312 и возвращаю данные json для контакта 12312. Если указать идентификатор контакта, которого не существует, я получаю сообщение об ошибке html 404, а не json.

Это происходит внутри строки контактов-> get ($ id).

В контроллере приложения API у меня есть

 public function initialize()
    {

        parent::initialize();
        $this->loadComponent('RequestHandler');
        $this->loadComponent('Crud.Crud', [
            'actions' => [
                'Crud.Index',
                'Crud.View',
                'Crud.Add',
                'Crud.Edit',
                'Crud.Delete'
            ],
            'listeners' => [
                'CrudJsonApi.JsonApi',
                'CrudJsonApi.Pagination', // Pagination != ApiPagination
                'Crud.ApiQueryLog',


            ],
            'Error' => [
                'errorLevel' => E_ALL,
                'exceptionRenderer' => 'CrudJsonApi\Error\JsonApiExceptionRenderer',
                'skipLog' => [],
                'log' => true,
                'trace' => true,
        ],
        ]);



        $this->Crud->config(['listeners.jsonApi.exceptionRenderer' => 'CrudJsonApi\Error\JsonApiExceptionRenderer']);

        $this->setJsonResponse();
    }



public function beforeRender(Event $event)
{
    $this->RequestHandler->renderAs($this, 'json');
    $this->response->type('application/json');
    $this->set('_serialize', true);
}

Я думал, что при использовании ошибок JsonApiExceptionRenderer 404 будет обработан вывод json.

Также работает разбиение на страницы, но данные пагинации не возвращаются с ответом ...

{
  "viewVar": "crmContacts",
  "crmContacts": [
    {
      "id": 1,
      "lastname": "testname1"
    },
    {
      "id": 2,
      "lastname": "smith"
    }
  ],
  "success": true
}

Есть идеи?

Спасибо

...