Как вы отправляете JSON-ответ в CakePHP 3.x - PullRequest
0 голосов
/ 04 июля 2018

Я хочу создать ответ в формате JSON. Я пробовал следующее в моих методах контроллера:

public function removeFilter($id = null)
{
    $this->autoRender = false;

    header('Content-Type: application/json');
    echo json_encode(['result' => 'filter_removed']);
}

Тогда следуйте инструкциям на CakePHP3.4: Как отправить ответ объекта json? Я также пробовал:

public function removeFilter($id = null)
{
    $this->autoRender = false;

    return $this->response
    ->withType('application/json')
    ->withStringBody(['result' => 'filter_removed']);
}

Оба из них дают заголовки ответа Content-Type: text/html; charset=UTF-8. С этим методом контроллера не связан шаблон, поэтому autoRender = false.

Что здесь не так?

CakePHP 3.5.13

1 Ответ

0 голосов
/ 04 июля 2018

Пожалуйста, попробуйте это. withStringBody принимает только строку.

// If you want a json response
return $this->response->withType('application/json')
    ->withStringBody(json_encode(['result' => 'filter_removed']));

CakePHP Подробнее

...