Exemplo n.º 1
0
 /**
  * @param AbstractQuery            $query
  * @param IndexDefinitionInterface $index
  * @param Request                  $request
  * @return PaginationInterface
  */
 public function getGrid(AbstractQuery $query, IndexDefinitionInterface $index, Request $request)
 {
     $sortDirection = $request->get('direction', IndexDefinitionInterface::SORT_ASC);
     $sortColumn = $request->get('sort');
     if (!in_array($sortDirection, [IndexDefinitionInterface::SORT_ASC, IndexDefinitionInterface::SORT_DESC])) {
         throw new CrudifyException("Invalid sorting direction {$sortDirection}");
     }
     if (null !== $sortColumn && !$index->hasColumnWithField($sortColumn)) {
         throw new CrudifyException("No such column '{$sortColumn}' in definition.");
     }
     if (null !== $sortColumn && !$index->getColumnWithField($sortColumn)->isSortable()) {
         throw new CrudifyException("Not allowed to sort column '{$sortColumn}'.");
     }
     /** @var SlidingPagination $pagination */
     $pagination = $this->paginator->paginate($query, $request->get('page', 1), $index->getObjectsPerPage());
     if (null !== $index->getDefaultSortColumn()) {
         $pagination->setParam('sort', $index->getDefaultSortColumn()->getField());
         $pagination->setParam('direction', $index->getDefaultSortDirection());
     }
     if (null !== $sortColumn) {
         $pagination->setParam('sort', $sortColumn);
         $pagination->setParam('direction', $sortDirection);
     }
     $pagination->setTemplate($index->getParent()->getTemplates()->getPagination());
     $pagination->setSortableTemplate($index->getParent()->getTemplates()->getSortable());
     return $pagination;
 }
 function let(Paginator $paginator, AbstractQuery $query, IndexDefinitionInterface $indexDefinition, SlidingPagination $pagination, DefinitionInterface $definition, TemplateDefinitionInterface $templateDefinition)
 {
     $this->beConstructedWith($paginator);
     $indexDefinition->getObjectsPerPage()->willReturn(20);
     $paginator->paginate($query, Argument::type('int'), Argument::type('int'))->willReturn($pagination);
     $indexDefinition->getParent()->willReturn($definition);
     $definition->getTemplates()->willReturn($templateDefinition);
     $pagination->setParam(Argument::any(), Argument::any())->willReturn();
     $pagination->setTemplate(Argument::any())->will(function ($args, $pagination) {
         $pagination->getTemplate()->willReturn($args[0]);
     });
     $pagination->setSortableTemplate(Argument::any())->will(function ($args, $pagination) {
         $pagination->getSortableTemplate()->willReturn($args[0]);
     });
 }