/**
  * {@inheritdoc}
  */
 public function register(Application $app)
 {
     if (!isset($app['twig'])) {
         $app->register(new TwigServiceProvider());
     }
     if (!isset($app['url_generator'])) {
         $app->register(new UrlGeneratorServiceProvider());
     }
     if (!isset($app['translator'])) {
         $app->register(new TranslationServiceProvider());
     }
     // add twig extension.
     $app['twig'] = $app->share($app->extend('twig', function ($twig, $app) {
         $processor = new Processor($app['url_generator'], $app['translator']);
         $twig->addExtension(new PaginationExtension($processor));
         return $twig;
     }));
     $app['knp_paginator.path'] = __DIR__ . '/../../../../knplabs/knp-paginator-bundle';
     $app['knp_paginator.limits'] = [2, 5, 10, 25, 50, 100, 200, 500];
     $app['knp_paginator.options'] = [];
     // Options fixer
     $app['knp_paginator.options_fixer'] = $app->share(function ($app) {
         $app['knp_paginator.options'] = array_replace_recursive(['default_options' => ['sort_field_name' => 'sort', 'sort_direction_name' => 'direction', 'filter_field_name' => 'filterField', 'filter_value_name' => 'filterValue', 'page_name' => 'page', 'distinct' => true], 'template' => ['pagination' => '@knp_paginator_bundle/sliding.html.twig', 'filtration' => '@knp_paginator_bundle/filtration.html.twig', 'sortable' => '@knp_paginator_bundle/sortable_link.html.twig'], 'page_range' => 5], $app['knp_paginator.options']);
     });
     // Paginator creator
     $app['knp_paginator'] = $app->share(function ($app) {
         $views = rtrim($app['knp_paginator.path'], '/') . '/Resources/views/Pagination';
         /** @var \Twig_Loader_Filesystem $loader */
         $loader = $app['twig.loader'];
         $loader->addPath($views, 'knp_paginator_bundle');
         // Fix options
         $app['knp_paginator.options_fixer'];
         // Create paginator
         $paginator = new Paginator($app['dispatcher']);
         $options = ['pageParameterName' => $app['knp_paginator.options']['default_options']['page_name'], 'sortFieldParameterName' => $app['knp_paginator.options']['default_options']['sort_field_name'], 'sortDirectionParameterName' => $app['knp_paginator.options']['default_options']['sort_direction_name'], 'filterFieldParameterName' => $app['knp_paginator.options']['default_options']['filter_field_name'], 'filterValueParameterName' => $app['knp_paginator.options']['default_options']['filter_value_name'], 'distinct' => $app['knp_paginator.options']['default_options']['distinct']];
         $paginator->setDefaultPaginatorOptions($options);
         return $paginator;
     });
     // Event subscribers.=
     $app['knp_paginator.pagination_subscriber'] = $app->share(function ($app) {
         return new PaginationSubscriber();
     });
     $app['knp_paginator.sortable_subscriber'] = $app->share(function ($app) {
         return new SortableSubscriber();
     });
     $app['knp_paginator.filtration_subscriber'] = $app->share(function ($app) {
         return new FiltrationSubscriber();
     });
     $app['knp_paginator.sliding_pagination_subscriber'] = $app->share(function ($app) {
         // Fix options
         $app['knp_paginator.options_fixer'];
         return new SlidingPaginationSubscriber(['defaultPaginationTemplate' => $app['knp_paginator.options']['template']['pagination'], 'defaultSortableTemplate' => $app['knp_paginator.options']['template']['sortable'], 'defaultFiltrationTemplate' => $app['knp_paginator.options']['template']['filtration'], 'defaultPageRange' => $app['knp_paginator.options']['page_range']]);
     });
 }
 /**
  * {@inheritdoc}
  */
 public function register(Container $app)
 {
     $app['paginator.default_options'] = ['page_name' => 'page', 'page_range' => 5, 'sort_field_name' => 'sort', 'sort_direction_name' => 'direction', 'filter_field_name' => 'filterField', 'filter_value_name' => 'filterValue', 'distinct' => true, 'template' => ['pagination' => 'sliding.html.twig', 'sortable' => 'sortable_link.html.twig', 'filtration' => 'filtration.html.twig']];
     $app['paginator.helper.processor'] = function ($app) {
         return new Processor($app['url_generator'], $app['translator']);
     };
     $app['paginator'] = function ($app) {
         $reflClass = new \ReflectionClass('Knp\\Bundle\\PaginatorBundle\\KnpPaginatorBundle');
         $path = sprintf('%s/Resources/views/Pagination', dirname($reflClass->getFileName()));
         $app['twig.loader']->addLoader(new \Twig_Loader_Filesystem($path));
         $paginator = new Paginator($app['dispatcher']);
         $paginator->setDefaultPaginatorOptions(['pageParameterName' => $app['paginator.default_options']['page_name'], 'sortFieldParameterName' => $app['paginator.default_options']['sort_field_name'], 'sortDirectionParameterName' => $app['paginator.default_options']['sort_direction_name'], 'filterFieldParameterName' => $app['paginator.default_options']['filter_field_name'], 'filterValueParameterName' => $app['paginator.default_options']['filter_value_name'], 'distinct' => $app['paginator.default_options']['distinct']]);
         return $paginator;
     };
     $app['paginator.subscriber.paginate'] = function () {
         return new PaginationSubscriber();
     };
     $app['paginator.subscriber.sortable'] = function () {
         return new SortableSubscriber();
     };
     $app['paginator.subscriber.filtration'] = function () {
         return new FiltrationSubscriber();
     };
     $app['paginator.subscriber.sliding_pagination'] = function ($app) {
         $templateOptions = $app['paginator.default_options']['template'];
         $options = ['defaultPaginationTemplate' => $templateOptions['pagination'], 'defaultSortableTemplate' => $templateOptions['sortable'], 'defaultFiltrationTemplate' => $templateOptions['filtration'], 'defaultPageRange' => $app['paginator.default_options']['page_range']];
         return new SlidingPaginationSubscriber($options);
     };
     $app->extend('twig', function (\Twig_Environment $twig, $app) {
         $twig->addExtension(new PaginationExtension($app['paginator.helper.processor']));
         return $twig;
     });
 }
 /**
  * @test
  */
 function shouldCustomizeParameterNames()
 {
     $dispatcher = new EventDispatcher();
     $dispatcher->addSubscriber(new MockPaginationSubscriber());
     // pagination view
     $dispatcher->addSubscriber(new ArraySubscriber());
     $p = new Paginator($dispatcher);
     $items = array('first', 'second');
     $view = $p->paginate($items, 1, 10);
     // test default names first
     $this->assertEquals('page', $view->getPaginatorOption('pageParameterName'));
     $this->assertEquals('sort', $view->getPaginatorOption('sortFieldParameterName'));
     $this->assertEquals('direction', $view->getPaginatorOption('sortDirectionParameterName'));
     $this->assertTrue($view->getPaginatorOption('distinct'));
     $this->assertNull($view->getPaginatorOption('sortFieldWhitelist'));
     // now customize
     $options = array('pageParameterName' => 'p', 'sortFieldParameterName' => 's', 'sortDirectionParameterName' => 'd', 'distinct' => false, 'sortFieldWhitelist' => array('a.f', 'a.d'));
     $view = $p->paginate($items, 1, 10, $options);
     $this->assertEquals('p', $view->getPaginatorOption('pageParameterName'));
     $this->assertEquals('s', $view->getPaginatorOption('sortFieldParameterName'));
     $this->assertEquals('d', $view->getPaginatorOption('sortDirectionParameterName'));
     $this->assertFalse($view->getPaginatorOption('distinct'));
     $this->assertEquals(array('a.f', 'a.d'), $view->getPaginatorOption('sortFieldWhitelist'));
     // change default paginator options
     $p->setDefaultPaginatorOptions(array('pageParameterName' => 'pg', 'sortFieldParameterName' => 'srt', 'sortDirectionParameterName' => 'dir'));
     $view = $p->paginate($items, 1, 10);
     $this->assertEquals('pg', $view->getPaginatorOption('pageParameterName'));
     $this->assertEquals('srt', $view->getPaginatorOption('sortFieldParameterName'));
     $this->assertEquals('dir', $view->getPaginatorOption('sortDirectionParameterName'));
     $this->assertTrue($view->getPaginatorOption('distinct'));
 }
Beispiel #4
0
Datei: TDK.php Projekt: pasls/tdk
 public function makeProducts($page)
 {
     $products = [];
     $perpage = isset($this->config['pagination']['perpage']) ? $this->config['pagination']['perpage'] : 10;
     for ($i = 0; $i < 20; $i++) {
         $products[] = $this->makeProduct();
     }
     $this->paginator->setDefaultPaginatorOptions(['route' => $this->app->router->getCurrentRoute()->getName(), 'query' => $this->app->router->getCurrentRoute()->getParams() + $this->app->request->get()]);
     $paginator = $this->paginator->paginate($products, $page, $perpage);
     $app = $this->app;
     $paginator->renderer = function ($data) use($app) {
         return $app->view->fetch("pagination.html.twig", $data);
     };
     return $paginator;
 }
 public function register(Container $container)
 {
     $container['knp_paginator.default_options'] = array('defaultPaginationOptions' => array('pageParameterName' => 'page', 'sortFieldParameterName' => 'sort', 'sortDirectionParameterName' => 'direction', 'filterFieldParameterName' => 'filterField', 'filterValueParameterName' => 'filterValue', 'distinct' => true), 'subscriberOptions' => array('defaultPaginationTemplate' => '@SaxulumPaginationProvider/sliding.html.twig', 'defaultSortableTemplate' => '@SaxulumPaginationProvider/sortable_link.html.twig', 'defaultFiltrationTemplate' => '@SaxulumPaginationProvider/filtration.html.twig', 'defaultPageRange' => 5));
     $container['knp_paginator.options.initializer'] = $container->protect(function () use($container) {
         static $initialized = false;
         if ($initialized) {
             return;
         }
         if (!isset($container['knp_paginator.options'])) {
             $container['knp_paginator.options'] = array();
         }
         $container['knp_paginator.options'] = array_replace_recursive($container['knp_paginator.default_options'], $container['knp_paginator.options']);
     });
     $container['knp_paginator'] = function () use($container) {
         $container['knp_paginator.options.initializer']();
         $paginator = new Paginator($container['dispatcher']);
         $paginator->setDefaultPaginatorOptions($container['knp_paginator.options']['defaultPaginationOptions']);
         return $paginator;
     };
     $container['knp_paginator.processor'] = function () use($container) {
         return new Processor($container['url_generator'], $container['translator']);
     };
     $container['dispatcher'] = $container->extend('dispatcher', function (EventDispatcherInterface $dispatcher) use($container) {
         $container['knp_paginator.options.initializer']();
         $slidingPaginationSubscriber = new SlidingPaginationSubscriber($container['knp_paginator.options']['subscriberOptions']);
         $dispatcher->addListener('kernel.request', array($slidingPaginationSubscriber, 'onKernelRequest'));
         $dispatcher->addSubscriber(new PaginationSubscriber());
         $dispatcher->addSubscriber(new SortableSubscriber());
         $dispatcher->addSubscriber($slidingPaginationSubscriber);
         return $dispatcher;
     });
     $container['twig'] = $container->extend('twig', function (\Twig_Environment $twig) use($container) {
         $twig->addExtension(new PaginationExtension($container['knp_paginator.processor']));
         return $twig;
     });
     $container['twig.loader.filesystem'] = $container->extend('twig.loader.filesystem', function (\Twig_Loader_Filesystem $twigLoaderFilesystem) {
         $twigLoaderFilesystem->addPath(__DIR__ . '/../Resources/views', 'SaxulumPaginationProvider');
         return $twigLoaderFilesystem;
     });
 }
 /**
  * Set parameters required by route generator for used route
  *
  * @param array $params Route parameters
  *
  * @return self
  */
 public function setRouteParams(array $params = array())
 {
     $this->paginator->setDefaultPaginatorOptions(array('route_params' => $params));
     return $this;
 }