/** * On form pre set data * * @param FormEvent $event */ public function preSetData(FormEvent $event) { $user = $event->getData(); if (!$user instanceof UserInterface) { return; } $form = $event->getForm(); $types = $this->datagridViewRepo->getDatagridViewTypeByUser($user); foreach ($types as $type) { $alias = $type['datagridAlias']; $form->add('default_' . str_replace('-', '_', $alias) . '_view', 'entity', ['class' => 'PimDataGridBundle:DatagridView', 'choice_label' => 'label', 'label' => 'user.default_' . str_replace('-', '_', $alias) . '_view.label', 'query_builder' => function (DatagridViewRepositoryInterface $gridViewRepository) use($user, $alias) { return $gridViewRepository->findDatagridViewByUserAndAlias($user, $alias); }, 'required' => false, 'attr' => ['data-type' => 'default-grid-view']]); } }
/** * {@inheritdoc} */ public function reverseTransform($value) { if (null === $value) { return null; } $types = $this->datagridViewRepo->getDatagridViewTypeByUser($value); foreach ($types as $type) { $field = 'default_' . str_replace('-', '_', $type['datagridAlias']) . '_view'; if (property_exists($value, $field)) { if ($value->getDefaultGridView($type['datagridAlias']) !== $value->{$field}) { $value->setDefaultGridView($type['datagridAlias'], $value->{$field}); } } } return $value; }
/** * Remove the Datagrid View with the given $identifier. * * If any errors occur during the process, a Json response is sent with {'errors' => 'Error message'}. * If success, return an empty Json response with code 204 (No content). * * @param Request $request * @param string $identifier * * @return JsonResponse */ public function removeAction(Request $request, $identifier) { $user = $this->tokenStorage->getToken()->getUser(); $view = $this->datagridViewRepo->findOneBy(['owner' => $user, 'id' => $identifier]); if (null === $view) { return new JsonResponse($this->translator->trans('grid.view_selector.flash.not_removable'), 404); } $this->remover->remove($view); $request->getSession()->getFlashBag()->add('success', new Message('grid.view_selector.flash.removed')); return new JsonResponse(null, 204); }