2016-11-09 12 views
2

현재 Hateoas를 사용하여 일부 REST 웹 서비스를 개발 중이며 더 긴 목록 표시를 위해 페이지 매김을 구현하고 싶습니다.willdurand hateoas 번들의 페이지 매김 경로 문제

참고 : 데이터베이스 검색 로직이 내 컨트롤러 아직

구현되지 않은 :

use Hateoas\Representation\PaginatedRepresentation; 
use Hateoas\Representation\CollectionRepresentation; 

/** 
* @Rest\View(serializerGroups={"details"}) 
* @Doc\ApiDoc(
*  section="User", 
*  resource=true, 
*  description="Get all catalogs accessible by a User", 
*  requirements={ 
*   { 
*   "name"="id", 
*   "dataType"="integer", 
*   "requirement"="\d+", 
*   "description"="The id of the user from which to retrieve" 
*   } 
*  }, 
*  output={ 
*   "class"="\CatalogV2", 
*   "groups"={"details"} 
*  } 
*) 
*/ 
public function getUserLicencesAction($id, $page = 1, $limit = 10) { 
    $service_rustine = $this->container->get('rustine_core.link'); 
    // Get User corresponding to id 
    $user = $service_rustine->getUser($id); 

    // Get licences 
    $licences = $user->getLicencesRight(); 

    $offset = ($page - 1) * $limit; 
    $pages = (int)ceil(count($licences)/$limit); 

    $collection = new CollectionRepresentation(
     array_slice($licences, $offset, $page * $limit), 
     'licences', 
     'licences', 
     new Exclusion(array("details")) 
     ); 
    $paginated = new PaginatedRepresentation(
     $collection, 
     'get_user_licences', 
     array("id" => $id), 
     $page, 
     $limit, 
     $pages 
     ); 

    // JSON output 
    return $paginated; 
} 

내가 가진 계속 오류 :

"일부 필수 매개 변수 (누락" id ")를 사용하여"get_user_licences "경로를 생성하십시오.

설명서에는 r oute 매개 변수 및 빈 배열을 사용하여 모든 예제를 찾을 수 없습니다.

parameters 배열에 지정된 routeparam id는 UrlGenerator에서 항상 무시됩니다. array ($ id)를 시도했지만 작동하지 않습니다.

$this->get('router')->generate('get_user_licences', array('id' => $id)); 

여러분의 도움에 감사드립니다 :

내가하려고하면 동일한 컨트롤러에서이 등으로 경로를 생성하는, 아무 문제가 없다!

+0

솔루션을 답변으로 추가하고 동의해야합니다. 이 상황을 수정하더라도 이러한 증상에 대한 유일한 해결책은 아니며 다른 사람들은 추가 사람들을 도울 수있는 다른 솔루션을 추가 할 수 있습니다. –

답변

2

문제점을 발견했습니다. 실제로 Hateoas \ Representation \ PaginatedRepresentation 메타 데이터를 재정의하는 YML 구성 파일이 있습니다 ... 라우트 정의의 매개 변수에 사용 된 표현식이 올바르지 않습니다. 예를 들어, "다음"링크를 들어 내가했다 : 대신

expr(object.getParameters(object.getPage() + 1)) 

expr(object.getPage() + 1) 

을 어쩌면이 사람 일일 도움이됩니다!