%PDF- %PDF-
Direktori : /home/emtnaeewxm/www/vendor/knplabs/knp-paginator-bundle/Subscriber/ |
Current File : /home/emtnaeewxm/www/vendor/knplabs/knp-paginator-bundle/Subscriber/SlidingPaginationSubscriber.php |
<?php namespace Knp\Bundle\PaginatorBundle\Subscriber; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Knp\Component\Pager\Event\PaginationEvent; use Knp\Bundle\PaginatorBundle\Pagination\SlidingPagination; use Symfony\Component\HttpKernel\Event\GetResponseEvent; use Symfony\Component\HttpKernel\HttpKernelInterface; class SlidingPaginationSubscriber implements EventSubscriberInterface { private $route; private $params = array(); private $options; public function __construct(array $options) { $this->options = $options; } public function onKernelRequest(GetResponseEvent $event) { if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { return; } $request = $event->getRequest(); $this->route = $request->attributes->get('_route'); $this->params = array_merge($request->query->all(), $request->attributes->get('_route_params', array())); foreach ($this->params as $key => $param) { if (substr($key, 0, 1) == '_') { unset($this->params[$key]); } } } public function pagination(PaginationEvent $event) { // default sort field and order $eventOptions = $event->options; if (isset($eventOptions['defaultSortFieldName']) && !isset($this->params[$eventOptions['sortFieldParameterName']])) { $this->params[$eventOptions['sortFieldParameterName']] = $eventOptions['defaultSortFieldName']; } if (isset($eventOptions['defaultSortDirection']) && !isset($this->params[$eventOptions['sortDirectionParameterName']])) { $this->params[$eventOptions['sortDirectionParameterName']] = $eventOptions['defaultSortDirection']; } $pagination = new SlidingPagination($this->params); $pagination->setUsedRoute($this->route); $pagination->setTemplate($this->options['defaultPaginationTemplate']); $pagination->setSortableTemplate($this->options['defaultSortableTemplate']); $pagination->setFiltrationTemplate($this->options['defaultFiltrationTemplate']); $pagination->setPageRange($this->options['defaultPageRange']); $event->setPagination($pagination); $event->stopPropagation(); } public static function getSubscribedEvents() { return array( 'knp_pager.pagination' => array('pagination', 1) ); } }