如何访问使用表单构建器构建的表单的POST字段?

问题描述 投票:0回答:1

我正在尝试使用Symfony 4编写注册表,我已经添加了密码确认字段。

class UserFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ...
            ->add('password', PasswordType::class)
            ->add('password2', PasswordType::class, [
                'label' => 'Password Confirmation',
                'mapped' => false,
            ])
            ...

并且我使用控制器的“密码”字段和“密码2”字段来比较它们是否相同

/**
 * @Route("/register", name="app_user_registration")
 * @return Response
 */
public function userRegistration( Request $request, UserPasswordEncoderInterface $passwordEncoder ) : Response
    {
        $user =  new User();
        $userRegistrationForm = $this->createForm(UserFormType::class, $user);

        $userRegistrationForm->handleRequest($request);

        if ($userRegistrationForm->isSubmitted() && $userRegistrationForm->isValid() ){
            $submittedList = $request->request->get('user_form');
            if($submittedList['password']  === $submittedList['password2'])
            {

如您所见,我必须使用:

$request->request->get('user_form')['password'];

而不是

$request->request->get('password');

作为文档建议:link

有人可以帮助我了解我的错误是无法根据文档使用该方法的地方

php symfony symfony4 symfony-forms
1个回答
0
投票

不是直接从请求中获取字段,而是使用刚创建的表单对象。

if ($userRegistrationForm->isSubmitted() && $userRegistrationForm->isValid() ){
    $data = $userRegistrationForm->getData();

现在数据将是具有键passwordpassword2的关联数组。

在文档中here对此进行了说明。

© www.soinside.com 2019 - 2024. All rights reserved.