Сериализация объектов в ZF3 MVC Response JSON

У меня есть приложение Zend Framework 3. Я добавил ViewJsonStrategy в module.config.php, Это позволяет следующей конечной точке возвращать JSON:

public function helloAction() {
return new JsonModel([
'msg'=> 'Hello World!',
]);
}

Тем не менее, я хочу вернуть объекты

class HelloObjectResponse
{
protected $message;

public function getMessage() : string {
return $this->message;
}

public function setMessage(string $message) : self  {
$this->message = $message;
return $this;
}
}

public function helloObjectAction() {
$obj = new HelloObjectResponse();
$obj->setMessage('Hello World!');
return new JsonModel($obj);
}

Это дает мне сообщение об ошибке Zend.

Zend \ View \ Model \ ViewModel :: setVariables: ожидает массив или аргумент Traversable; получил «Приложение \ Модель \ HelloObjectResponse»

Как мне легко сделать этот объект JSON таким образом, чтобы Zend знал, как установить тип MIME и все такое.

1

Решение

use Zend\View\Model\JsonModel;
use Zend\Hydrator\Reflection;

$obj = new HelloObjectResponse();
$obj->setMessage('Hello World!');

$hydrator = new Reflection;
return new JsonModel($hydrator->extract($obj));
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]