/** * Display or save datagrid views * * @param Request $request * @param string $alias * @param DatagridView|null $view * * @return Response|JsonResponse */ public function indexAction(Request $request, $alias, DatagridView $view = null) { $user = $this->getUser(); if (!$view || $view->getOwner() !== $user) { $view = new DatagridView(); $view->setOwner($user); $view->setDatagridAlias($alias); } $form = $this->createForm('pim_datagrid_view', $view); if ($request->isMethod('POST')) { $creation = !(bool) $view->getId(); if (!$creation) { $form->remove('label'); } $form->submit($request); // If the view was created based on the default view, set the default columns if (!$view->getColumns()) { $view->setColumns(array_keys($this->datagridViewManager->getColumnChoices($alias, true))); } $violations = $this->validator->validate($view); if ($violations->count()) { $messages = []; foreach ($violations as $violation) { $messages[] = $this->getTranslator()->trans($violation->getMessage()); } return new JsonResponse(['errors' => $messages]); } else { $this->datagridViewManager->save($view); if ($creation) { $this->addFlash('success', 'flash.datagrid view.created'); } return new JsonResponse(['id' => $view->getId()]); } } $views = $this->datagridViewManager->findPublic($alias); return $this->render('PimDataGridBundle:Datagrid:_views.html.twig', ['alias' => $alias, 'views' => $views, 'form' => $form->createView()]); }