コード例 #1
0
 /**
  * @param FilterFormEvent $event
  */
 public function onPreCreateForm(FilterFormEvent $event)
 {
     $formData = $event->getData();
     if (!$formData instanceof User) {
         return;
     }
     /** @var \Symfony\Component\Form\FormInterface $form */
     $form = $event->getForm();
     if (!$formData->getId() || 'user' !== $form->getName()) {
         return;
     }
     $form->remove('plainPassword');
 }
コード例 #2
0
 /**
  * @param CrudController     $controller
  * @param Request            $request
  * @param EntityInterface    $data
  * @param FormInterface|null $form
  *
  * @return mixed
  */
 public function createNewOrUpdate(CrudController $controller, Request $request, EntityInterface $data, FormInterface $form = null)
 {
     $translator = $this->container->get('translator');
     $translationDomain = $this->container->getParameter('symfonian_id.admin.translation_domain');
     $event = new FilterFormEvent();
     $event->setData($data);
     $event->setForm($form);
     $this->fireEvent(Event::PRE_FORM_SUBMIT, $event);
     $response = $event->getResponse();
     if ($response) {
         return $response;
     }
     $form->handleRequest($request);
     $viewParams['form'] = $form->createView();
     $viewParams['form_theme'] = $this->container->getParameter('symfonian_id.admin.themes.form_theme');
     $viewParams['menu'] = $this->container->getParameter('symfonian_id.admin.menu');
     if ($request->isMethod('POST')) {
         $preFormValidationEvent = new FilterFormEvent();
         $preFormValidationEvent->setForm($form);
         $this->fireEvent(Event::PRE_FORM_VALIDATION, $preFormValidationEvent);
         $response = $preFormValidationEvent->getResponse();
         if ($response) {
             return $response;
         }
         if (!$form->isValid()) {
             $viewParams['errors'] = true;
         } else {
             $data = $form->getData();
             $preSaveEvent = new FilterEntityEvent();
             $preSaveEvent->setEntity($data);
             $preSaveEvent->setEntityManager($this->manager);
             $this->fireEvent(Event::PRE_SAVE, $preSaveEvent);
             $this->manager->persist($data);
             $this->manager->flush();
             $postSaveEvent = new FilterEntityEvent();
             $postSaveEvent->setEntityManager($this->manager);
             $postSaveEvent->setEntity($data);
             $this->fireEvent(Event::POST_SAVE, $postSaveEvent);
             $viewParams['success'] = $translator->trans('message.data_saved', array(), $translationDomain);
         }
     }
     $this->viewParams = array_merge($this->viewParams, $viewParams);
 }