如何更好地实现添加相关的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
);
}
答案 0 :(得分:1)
我一直都那样工作,而且从未遇到过问题。实际上,我什至不使用symfony的形式,因为它们不那么灵活。最好的方法是让您感觉更舒适。只要确保干净且一致即可。 当然,您可以向User实体添加一个方法,但这只是模块化的问题,在这种情况下并不是必须的。