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));
}