gpt4 book ai didi

forms - fosuserbundle 的 symfony2 嵌入式表单验证

转载 作者:行者123 更新时间:2023-12-02 21:00:37 24 4
gpt4 key购买 nike

在我的例子中,嵌入式表单验证不起作用。

我已经设置了'cascade_validation' => true,甚至尝试在我的模型中使用有效约束来强制对子对象进行验证。也不起作用。

它看起来像这样:

我的用户类别:

/**
* @ORM\OneToOne(targetEntity="Info", inversedBy="user", cascade={"persist"})
* @Assert\Valid
*/
protected $info;

正如我们所见,它包含一个额外的信息字段类型。

现在我覆盖的 Controller :

public function registerBrandAction(Request $request)
{
/** @var $formFactory \FOS\UserBundle\Form\Factory\FactoryInterface */
$formFactory = $this->container->get('fos_user.registration.form.factory');
/** @var $userManager \FOS\UserBundle\Model\UserManagerInterface */
$userManager = $this->container->get('fos_user.user_manager');
/** @var $dispatcher \Symfony\Component\EventDispatcher\EventDispatcherInterface */
$dispatcher = $this->container->get('event_dispatcher');

$user = $userManager->createUser();
$user->setEnabled(true);

$event = new GetResponseUserEvent($user, $request);
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_INITIALIZE, $event);

if (null !== $event->getResponse()) {
return $event->getResponse();
}

$form = $formFactory->createForm(new RegistrationFormType($user));
$form->setData($user);
$form->add('info', new InfoFormType());
$brand = new Info();
$user->setBrand($info);

if ('POST' === $request->getMethod()) {
$form->bind($request);

if ($form->isValid()) {
$event = new FormEvent($form, $request);
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_SUCCESS, $event);
$em = $this->container->get('doctrine')->getManager();
$em->persist($info);
$user->addRole('ROLE_ADMIN');
$userManager->updateUser($user, false);
$em->flush();

if (null === $response = $event->getResponse()) {
$url = $this->container->get('router')->generate('fos_user_registration_confirmed');
$response = new RedirectResponse($url);
}

$dispatcher->dispatch(FOSUserEvents::REGISTRATION_COMPLETED, new FilterUserResponseEvent($user, $request, $response));

return $response;
}
}

return $this->container->get('templating')->renderResponse('FOSUserBundle:Registration:registerAdmin.html.' . $this->getEngine(), array(
'form' => $form->createView(),
));
}

因此,在我的 RegistrationFormType 中,我启用了cascade_validation。但验证仍然不起作用。谁能帮我 ?还有为什么我要在 Controller 中添加这个?因为我有 2 个用户,并且我不想为其他用户提供该信息。

最佳答案

就这么简单!只需添加到您的验证 fos 用户注册表单组

* @Assert\NotBlank(groups={"registration"})

并填写您的表格:

'validation_groups' => array('registration'),

它有效!

关于forms - fosuserbundle 的 symfony2 嵌入式表单验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23896211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com