2014-10-22 2 views
0

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

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

{ 
     "_links": { 
      "self": { "href": "https://stackoverflow.com/users/1" }, 
      "friends": [ 
       { "href": "https://stackoverflow.com/users/2" }, 
       { "href": "https://stackoverflow.com/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, но не смог разобраться, как это сделать. Пожалуйста, дайте мне знать, как я могу это достичь ...

Любая помощь будет очень признательна!

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

ответ

2

Это, как вы работаете с @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"} 
    ] 
    } 
}