我正在尝试使用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
有人可以帮助我了解我的错误是无法根据文档使用该方法的地方
不是直接从请求中获取字段,而是使用刚创建的表单对象。
if ($userRegistrationForm->isSubmitted() && $userRegistrationForm->isValid() ){
$data = $userRegistrationForm->getData();
现在数据将是具有键password
和password2
的关联数组。
在文档中here对此进行了说明。