Symfony - действие редактирования контроллера - PullRequest
0 голосов
/ 04 июня 2018

Я определил форму в моем контроллере и установил функцию для редактирования / обновления определенных полей, которые я могу найти по идентификатору.Я не могу найти, что я делаю не так ..

 public function getUserEdit(Request $request)
{
    $form = $this->createFormBuilder()
        ->add('firstName', TextType::class, array('label' => 'First Name*', 'attr' => ['class'=>'form-control']))
        ->add('save', SubmitType::class, array('label' => 'Send', 'attr' => [
            'class' => 'btn btn-primary action-save'
        ]))
        ->getForm();

    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid()) {

        $data = $form->getData();
        $firstName = $data['firstName'];

        $this->container->get('user')->editUser($firstName);
    }

    return $this->success();
}

Сервис

public function editUser($id)
{
    $editUsers = $this->getUserRepository()->find($id);

    if(empty($editUsers)) {
        $editUsers = new User();
        $editUsers->setId($id);
        $this->em->persist($editUsers);
        $this->em->flush();
    }
}

1 Ответ

0 голосов
/ 04 июня 2018

Symfony returns один объект при поиске по первичному ключу find (обычно id), тогда вы можете проверить, существует ли, возвращает один Entity (в данном случае User) и, таким образом, проверитьиспользуя insteance.

public function editUser($id)
{
    $editUsers = $this->getUserRepository()->find($id);

    if($editUsers insteance User) { // here just check 
        //$editUsers = new User(); // here You don't need create new object of class User, just remove
        $editUsers->setId($id);
        $this->em->persist($editUsers);
        $this->em->flush();
    }
    else {
        // do something if you need
    }
}
...