2014-10-22 4 views
0

SF2 프로젝트 중 하나에서 Fazing과 Bazinga Hateoas를 사용하고 있습니다. 내가 Entity.User.yml 파일에 코드 아래 사용하고Symfony와 Bazinga Hateoas의 여러 링크

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

: API 호출 중 하나에서

는,이 같은 공급 현재 사용자 또는 사용자 ID로 친구의 링크를 표시 할 :

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 

나는 REPOS에서 "findFriends"방법을 뒀다 itory하지만 yml 파일에는 액세스 할 수 없습니다. 나는 이것이 일을하는 올바른 방법이 아니라고 생각합니다.

나는 https://github.com/willdurand/Hateoas을 거쳤는데 어떻게해야 할지를 알 수 없습니다. 제발 이걸 어떻게 달성 할 수 있는지 안내해주세요 ...

도움이 될만한 정보가 있습니까?

나는이 당신이 @RelationProvider 작업을 어떻게이

답변

2

을 달성 할 수있는 방법 나를 인도 해주십시오.

/** 
* 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/핼 결과 :

{ 
    "_links": { 
    "relation_name": [ 
     {"href": "link1"}, 
     {"href": "link2"}, 
     {"href": "link3"} 
    ] 
    } 
}