/** * 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; }