Knp\Bundle\KnpBundlesBundle\Controller\OrganizationController::listAction PHP Method

listAction() public method

public listAction ( Request $request, $sort )
$request Symfony\Component\HttpFoundation\Request
    public function listAction(Request $request, $sort)
    {
        $format = $request->getRequestFormat();
        if (!array_key_exists($sort, $this->sortFields)) {
            $msg = sprintf('%s is not a valid sorting field', $sort);
            if ('json' === $format) {
                return new JsonResponse(array('status' => 'error', 'message' => $msg), 406);
            }
            throw new HttpException($msg, 406);
        }
        $sortField = $this->sortFields[$sort];
        $this->highlightMenu('organizations');
        $query = $this->getRepository('Organization')->queryAllWithBundlesSortedBy($sortField);
        $paginator = $this->getPaginator($query, $request->query->get('page', 1), $request->query->get('limit', 18));
        $organizations = $paginator->getCurrentPageResults();
        /**
         * @see http://stackoverflow.com/a/8527531
         */
        if (isset($organizations[0]) && is_array($organizations[0])) {
            foreach ($organizations as $i => $org) {
                $organizations[$i] = $org[0];
            }
        }
        if ('json' === $format) {
            $result = array('results' => array(), 'total' => $paginator->getNbResults());
            /* @var $organization Organization */
            foreach ($organizations as $organization) {
                $result['results'][] = $organization->toSmallArray() + array('url' => $this->generateUrl('organization_show', array('name' => $organization->getName()), true));
            }
            if ($paginator->hasPreviousPage()) {
                $result['prev'] = $this->generateUrl('organization_list', array('sort' => $sort, 'page' => $paginator->getPreviousPage(), 'limit' => $request->query->get('limit'), '_format' => 'json'), true);
            }
            if ($paginator->hasNextPage()) {
                $result['next'] = $this->generateUrl('organization_list', array('sort' => $sort, 'page' => $paginator->getNextPage(), 'limit' => $request->query->get('limit'), '_format' => 'json'), true);
            }
            return new JsonResponse($result);
        }
        return $this->render('KnpBundlesBundle:Organization:list.html.twig', array('paginator' => $paginator, 'sortLegends' => $this->sortLegends, 'sort' => $sort));
    }