添加相关实体更好的方法

时间:2018-10-19 08:24:37

标签: php symfony symfony-forms symfony4

如何更好地实现添加相关的Role实体?如果可能的话,或者将方法直接添加到User实体中,最好将其保留在表单中。是否有内置的机制或应使用哪种模式?

public function add(Request $request)
{
    $data = $request->request->all();
    $user = new User();
    $form = $this->createForm(UserType::class, $user);
    $form->submit($data);
    if (false === $form->isValid()) {
        return $form;
    }
    $user = $form->getData();
    // Adding a Roles
    if (!empty($data['user_roles'])) {
        foreach ($data['user_roles'] as $value) {
            // Checking if a Role is present in DB
            $role = $this->getDoctrine()
                ->getRepository(Role::class)
                ->findOneBy(['role_name' => $value]);
            if ($role) {
                $user->setUserRole($role);
            }
        }
    }
    $this->em->persist($user);
    $this->em->flush();

    return new JsonResponse(
        [
            'status' => 'ok',
            'last_insert_id' => $user->getId(),
        ],
        JsonResponse::HTTP_CREATED
    );
}

1 个答案:

答案 0 :(得分:1)

我一直都那样工作,而且从未遇到过问题。实际上,我什至不使用symfony的形式,因为它们不那么灵活。最好的方法是让您感觉更舒适。只要确保干净且一致即可。 当然,您可以向User实体添加一个方法,但这只是模块化的问题,在这种情况下并不是必须的。