Несколько ссылок в Bazinga Hateoas с Symfony

Я использую Bazinga Hateoas с Fosrest в одном из моих проектов SF2.

В одном из вызовов API я хочу отобразить ссылку друзей с текущим пользователем или идентификатором пользователя, указанным следующим образом:

    {
        "_links": {
            "self": { "href": "/users/1" },
            "friends": [
              { "href": "/users/2" },
              { "href": "/users/3" },
            ]
        },
    }

Я использую приведенный ниже код в файле Entity.User.yml:

relations:
    -
      rel: self
      href:
        route: api_1_get_users
        parameters:
          id: expr(object.getId())
        absolute: true
    -  
      rel: expr(object.findFriends(object.getId()))
      href:
        route: api_1_get_users
        parameters:
          id: expr(object.getId())
        absolute: true

Я поместил метод «findFriends» в репозиторий, но он недоступен внутри файла yml. Я думаю, это не правильный способ ведения дел.

Я просмотрел https://github.com/willdurand/Hateoas, но не смог понять, как сделай это. Пожалуйста, помогите мне, как я могу достичь этого...

Любая помощь приветствуется !

Пожалуйста, помогите мне, как я могу достичь этого


person joy d    schedule 22.10.2014    source источник


Ответы (1)


Вот как вы работаете с @RelationProvider.

/**
 * Note:
 * ====
 * RelationProvider takes the method name which returns the relations.
 * 
 * @Hateoas\RelationProvider("addRelations")
 */
class LinkContainingResource
{
    public function addRelations($object, ClassMetadataInterface $classMetadata)
    {
        /**
         * Important Note:
         * ===============
         * Relation is actually an Hateoas\Configuration\Relation object,
         * NOT \Hateoas\Configuration\Annotation\Relation
         */
        return [new Relation('relation_name', 'link1'),
                new Relation('relation_name', 'link2'),
                new Relation('relation_name', 'link3')];
    }
}

Результат Json/Hal:

{
  "_links": {
    "relation_name": [
      {"href": "link1"},
      {"href": "link2"},
      {"href": "link3"}
    ]
  }
}
person Chaosus    schedule 24.11.2014