В настоящее время я занимаюсь разработкой некоторых веб-сервисов REST с использованием Hateoas, и я хотел бы реализовать разбивку на страницы для отображения более длинного списка.Проблемы с разбивкой по страницам с помощью пакета 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 ") для создания URL-адреса для маршрута" get_user_licences "
Документация не очень ясна относительно r oute, и я не могу найти какой-либо пример с использованием непустого массива.
Идентификатор маршрутизации, заданный в массиве параметров, всегда игнорируется в UrlGenerator. Я пробовал массив ($ id), но он тоже не работает.
Когда я пытаюсь, в том же контроллере, чтобы создать маршрут с, как это, нет никаких проблем:
$this->get('router')->generate('get_user_licences', array('id' => $id));
Спасибо за вашу помощь!
Вы должны добавить свое решение в качестве ответа и принять его. Даже если он исправит эту ситуацию, это будет не единственное исправление этих симптомов, и другие люди смогут добавить другие решения, которые могут помочь другим людям. –