Добавить больше ссылок на _links в HAL лица - PullRequest
0 голосов
/ 17 марта 2020

Я использую 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"
    }
}
...