Knp\Bundle\KnpBundlesBundle\Controller\DeveloperController::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];
        $query = $this->getRepository('Developer')->queryAllWithBundlesSortedBy($sortField);
        $paginator = $this->getPaginator($query, $request->query->get('page', 1), $request->query->get('limit', 18));
        if ('json' === $format) {
            $result = array('results' => array(), 'total' => $paginator->getNbResults());
            /* @var $developer Developer */
            foreach ($paginator as $developer) {
                $result['results'][] = array('name' => $developer->getName(), 'email' => $developer->getEmail(), 'avatarUrl' => $developer->getAvatarUrl(), 'fullName' => $developer->getFullName(), 'company' => $developer->getCompany(), 'location' => $developer->getLocation(), 'blog' => $developer->getUrl(), 'lastCommitAt' => $developer->getLastCommitAt() ? $developer->getLastCommitAt()->getTimestamp() : null, 'score' => $developer->getScore(), 'url' => $this->generateUrl('developer_show', array('name' => $developer->getName()), true));
            }
            if ($paginator->hasPreviousPage()) {
                $result['prev'] = $this->generateUrl('developer_list', array('sort' => $sort, 'page' => $paginator->getPreviousPage(), 'limit' => $request->query->get('limit'), '_format' => 'json'), true);
            }
            if ($paginator->hasNextPage()) {
                $result['next'] = $this->generateUrl('developer_list', array('sort' => $sort, 'page' => $paginator->getNextPage(), 'limit' => $request->query->get('limit'), '_format' => 'json'), true);
            }
            return new JsonResponse($result);
        }
        $this->highlightMenu('developers');
        return $this->render('KnpBundlesBundle:Developer:list.html.twig', array('developers' => $paginator, 'sort' => $sort, 'sortLegends' => $this->sortLegends));
    }