/**
  * @return array w/ pagination links
  */
 protected function doRender()
 {
     $pagination = $this->getPayload('subject');
     $current_page_url = $this->url_generator->generateUrl(null);
     $url_parameters = ArrayToolkit::getUrlQueryInRequestFormat($current_page_url);
     unset($url_parameters['offset']);
     // offset is not needed when page is used (see validator)
     $current_page_url = $this->url_generator->generateUrl(null, $url_parameters);
     $curie = $this->getOption('curie');
     $translation_domain = $this->getOption('translation_domain', 'application.ui');
     $links = ['self' => ['href' => $current_page_url]];
     if (!$pagination->isFirstPage()) {
         $links['first'] = ['href' => $this->url_generator->generateUrl(null, array_merge($url_parameters, ['offset' => 0])), 'title' => $this->translator->translate('pager.first_page.title', $translation_domain)];
     }
     if ($pagination->hasPrevPage()) {
         $links['prev'] = ['href' => $this->url_generator->generateUrl(null, array_merge($url_parameters, ['offset' => $pagination->getPrevPageOffset()])), 'title' => $this->translator->translate('pager.prev_page.title', $translation_domain)];
     }
     if ($pagination->hasNextPage()) {
         $links['next'] = ['href' => $this->url_generator->generateUrl(null, array_merge($url_parameters, ['offset' => $pagination->getNextPageOffset()])), 'title' => $this->translator->translate('pager.next_page.title', $translation_domain)];
     }
     if (!$pagination->isLastPage()) {
         $links['last'] = ['href' => $this->url_generator->generateUrl(null, array_merge($url_parameters, ['offset' => $pagination->getLastPageOffset()])), 'title' => $this->translator->translate('pager.last_page.title', $translation_domain)];
     }
     if ($pagination->getNumberOfPages() > 1) {
         $link_name = empty($curie) ? 'jumpToPage' : $curie . ':jumpToPage';
         $links[$link_name] = ['href' => $this->url_generator->generateUrl(null), 'templated' => true, 'title' => $this->translator->translate('pager.jump_to_page.title', $translation_domain)];
     }
     return $links;
 }
 protected function getTemplateParameters()
 {
     $params = parent::getTemplateParameters();
     $pagination = $this->getPayload('subject');
     $params = array_merge($params, $pagination->toArray());
     $current_page_url = $this->url_generator->generateUrl(null);
     $current_url_parameters = ArrayToolkit::getUrlQueryInRequestFormat($current_page_url);
     unset($current_url_parameters['offset']);
     // offset is not needed when page is used (see validator)
     $url_parameters = (array) $this->getOption('url_parameters', []);
     $url_parameters = array_merge($current_url_parameters, $url_parameters);
     // we add all query parameters of the current URL as hidden GET form inputs to not lose any state on submit
     $params['url_parameters'] = $url_parameters;
     $params['current_page_url'] = $this->url_generator->generateUrl(null, $url_parameters);
     $params['first_page_url'] = $this->url_generator->generateUrl(null, array_merge($url_parameters, ['offset' => 0]));
     $params['last_page_url'] = $this->url_generator->generateUrl(null, array_merge($url_parameters, ['offset' => $pagination->getLastPageOffset()]));
     $params['next_page_url'] = $this->url_generator->generateUrl(null, array_merge($url_parameters, ['offset' => $pagination->getNextPageOffset()]));
     $params['prev_page_url'] = $this->url_generator->generateUrl(null, array_merge($url_parameters, ['offset' => $pagination->getPrevPageOffset()]));
     $params['number_of_pages'] = $pagination->getNumberOfPages();
     return $params;
 }
예제 #3
0
 public function testGetUrlQueryInRequestFormat()
 {
     $this->assertEquals(["limit" => 2, "foo[0]" => 1, "foo[1]" => 2, "foo[2]" => 3], ArrayToolkit::getUrlQueryInRequestFormat('http://some.tld?limit=2&foo[0]=1&foo[1]=2&foo[2]=3'));
 }