/**
  * @param array          $entities
  * @param PaginationData $paginationData
  * @param array          $additionalData
  *
  * @return Closure
  */
 public function getPagination(array $entities, PaginationData $paginationData, array $additionalData = null)
 {
     if (is_null($entities)) {
         $entities = array();
     }
     if (is_null($additionalData)) {
         $additionalData = array();
     }
     $pagination = new Pagination($entities, $paginationData->getTotalItemsCount());
     $pagination->setCurrentPage($paginationData->getPageIndex());
     $pagination->setPageRange($paginationData->getPageRange());
     $pagination->setPageSize($paginationData->getPageSize());
     $twig_env = $this->twig;
     $twig_template = $this->template;
     $pagination->renderer = function ($data) use($twig_env, $twig_template, $additionalData) {
         //return var_export($data, true);
         // common errors to check: is $twig_template file present?
         //return $twig_template;
         try {
             return $twig_env->render($twig_template, array_merge($data, $additionalData));
         } catch (\Exception $e) {
             return $e->getMessage();
         }
     };
     return $pagination;
 }
 /**
  * @param PaginationData $paginationData
  * @param array          $additionalData
  *
  * @return Closure
  */
 public function getPageSizeSelector(PaginationData $paginationData, array $additionalData = null)
 {
     if (is_null($additionalData)) {
         $additionalData = array();
     }
     $pagesizeselector = new PageSizeSelector();
     $pagesizeselector->setSizes($this->sizes);
     $pagesizeselector->setCurrentSize($paginationData->getPageSize());
     $twig_env = $this->twig;
     $twig_template = $this->template;
     $pagesizeselector->renderer = function ($data) use($twig_env, $twig_template, $additionalData) {
         //return var_export($data, true);
         // common errors to check: is $twig_template file present?
         //return $twig_template;
         try {
             return $twig_env->render($twig_template, array_merge($data, $additionalData));
         } catch (\Exception $e) {
             return $e->getMessage();
         }
     };
     return $pagesizeselector;
 }
 /**
  * Reads sort direction.
  * 
  * @param string    $name
  * @param string    $default_direction
  *
  * @return string
  */
 public function getSortDirection($name = 'sort', $default_direction = 'asc')
 {
     $sort_direction = null;
     $sort = '';
     // process request
     if ($this->request->query->has($name)) {
         $sort = $this->request->query->get($name);
     }
     $sort_array = explode('.', $sort);
     if (is_array($sort_array)) {
         if (count($sort_array) > 1) {
             $sort_direction = strtolower($sort_array[1]) == 'desc' ? 'desc' : 'asc';
         }
     }
     // read / write page size
     $sort_direction = $this->register('sort_direction', 's', $sort_direction);
     // if not value returned, use default
     if (trim($sort_direction) == '') {
         $sort_direction = $default_direction;
     }
     // update data
     $this->pagination_data->setSortDirection($sort_direction);
     return $sort_direction;
 }