Я использую mezzio-hal (v3) со следующей конфигурацией HAL:
[
'__class__' => RouteBasedResourceMetadata::class,
'resource_class' => Handler\PersonEntity::class,
'route' => 'list.persons',
'extractor' => ClassMethodsHydrator::class,
],
[
'__class__' => RouteBasedCollectionMetadata::class,
'collection_class' => Handler\PersonCollection::class,
'collection_relation' => 'persons',
'route' => 'list.persons',
],
Это мой класс коллекции:
class PersonCollection extends Paginator
{
}
Это мой класс сущности:
class PersonEntity
{
private $id;
private $name;
public function getId() : int
{
return $this->id;
}
public function setId(int $id) : self
{
$this->id = $id;
return $this;
}
public function getName() : string
{
return $this->name;
}
public function setName(string $name) : self
{
$this->name = $name;
return $this;
}
}
Это моя команда построения HAL:
$halResource = $this->getResourceGenerator()->fromObject($personCollection, $request);
И, по крайней мере, это мой вывод:
{
"_total_items": 1,
"_page": 1,
"_page_count": 1,
"_links": {
"self": {
"href": "/api/persons?page=1"
}
},
"_embedded": {
"persons": [
{
"id": 1,
"name": "example",
"_links": {
"self": {
"href": "/api/persons/1"
}
}
}
]
}
}
Что я хочу знать: возможно ли это добавить больше ссылок на каждую сущность в моей коллекции, например, добавить ссылку на конечную точку для списка контактной информации, и если да, то как я могу это сделать? Я хочу получить этот вывод:
"_links": {
"self": {
"href": "/api/persons/1"
},
"contacts": {
"href": "/api/persons/1/contacts"
}
}