CRUDlex\ControllerProvider::showList PHP Method

showList() public method

The controller for the "show list" action.
public showList ( Request $request, Silex\Application $app, string $entity ) : Response
$request Symfony\Component\HttpFoundation\Request the current request
$app Silex\Application the Silex application
$entity string the current entity
return Symfony\Component\HttpFoundation\Response the HTTP response of this action or 404 on invalid input
    public function showList(Request $request, Application $app, $entity)
    {
        $crudData = $app['crud']->getData($entity);
        $definition = $crudData->getDefinition();
        $filter = [];
        $filterActive = false;
        $filterToUse = [];
        $filterOperators = [];
        $this->buildUpListFilter($request, $definition, $filter, $filterActive, $filterToUse, $filterOperators);
        $pageSize = $definition->getPageSize();
        $total = $crudData->countBy($definition->getTable(), $filterToUse, $filterOperators, true);
        $page = abs(intval($request->get('crudPage', 0)));
        $maxPage = intval($total / $pageSize);
        if ($total % $pageSize == 0) {
            $maxPage--;
        }
        if ($page > $maxPage) {
            $page = $maxPage;
        }
        $skip = $page * $pageSize;
        $sortField = $request->get('crudSortField', $definition->getInitialSortField());
        $sortAscendingRequest = $request->get('crudSortAscending');
        $sortAscending = $sortAscendingRequest !== null ? $sortAscendingRequest === 'true' : $definition->isInitialSortAscending();
        $entities = $crudData->listEntries($filterToUse, $filterOperators, $skip, $pageSize, $sortField, $sortAscending);
        $crudData->fetchReferences($entities);
        return $app['twig']->render($app['crud']->getTemplate($app, 'template', 'list', $entity), ['crudEntity' => $entity, 'crudData' => $crudData, 'definition' => $definition, 'entities' => $entities, 'pageSize' => $pageSize, 'maxPage' => $maxPage, 'page' => $page, 'total' => $total, 'filter' => $filter, 'filterActive' => $filterActive, 'sortField' => $sortField, 'sortAscending' => $sortAscending, 'layout' => $app['crud']->getTemplate($app, 'layout', 'list', $entity)]);
    }