私は Zend フレームワークを初めて使用し、API 応答の生成に HAL を使用しようとしています。以下は、私の問題のより簡単な状況です。
クラス:
class Version
{
protected $data;
public function __construct($ar){
$data = $ar;
}
public function getArrayCopy(){
return $data;
}
}
$obj = new version(['major'=>1,'minor'=>2,'fix'=>3]);
ハイドレーターでテストすると、次のようにうまく機能します。
use Zend\Hydrator\ArraySerializableHydrator;
$hydrator = new ArraySerializableHydrator();
$data = $hydrator->extract($obj);
print_r($data); // outputs ['major'=>1,'minor'=>2,'fix'=>3]
私のHAL構成は次のとおりです。
MetadataMap::class => [
[
'__class__' => RouteBasedResourceMetadata::class,
'resource_class' => Version::class,
'route' => 'version',
'extractor' => ArraySerializableHydrator::class,
],
]
Zend 表現力豊かな (バージョン 3) リクエスト ハンドラーで次の行を使用します。
$resource = $this->resourceGenerator->fromObject($obj, $request);
$res = $this->responseFactory->createResponse($request, $resource);
リンクは正しく生成されますが、メタ データ (バージョン情報) は空になります。どんな助けでも大歓迎です。
注意: 私の実際のコードは複雑です。ここでは、問題のより単純なバージョンを生成しようとしました。