第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

僅當(dāng) symfony 表單類型上其他字段不為空時(shí)才驗(yàn)證

僅當(dāng) symfony 表單類型上其他字段不為空時(shí)才驗(yàn)證

PHP
PIPIONE 2023-08-06 10:49:44
我是 symfony 表單類型的新手。我有一種情況,在表單中我需要包含更改密碼功能我的表單類型如下<?phpnamespace App\Form;use App\Entity\User;use Symfony\Component\Form\AbstractType;use Symfony\Component\Form\FormBuilderInterface;use Symfony\Component\OptionsResolver\OptionsResolver;use Symfony\Component\Validator\Constraints\Image;use Symfony\Component\Form\Extension\Core\Type\HiddenType;use Symfony\Component\Form\Extension\Core\Type\PasswordType;use Symfony\Component\Form\Extension\Core\Type\RepeatedType;use Symfony\Component\Form\Extension\Core\Type\FileType;use Symfony\Component\Validator\Constraints\NotBlank;use Symfony\Component\Validator\Constraints\Length;use Symfony\Component\Security\Core\Validator\Constraints\UserPassword;class ProfileFormType extends AbstractType{    public function buildForm(FormBuilderInterface $builder, array $options)    {        $imageConstraints = [            new Image([                'maxSize' => '2M'            ])        ];        $builder            ->add('firstName')            ->add('lastName')            ->add('imageFile', FileType::class, [                'mapped' => false,                'label' => false,                'required' => false,                'error_bubbling' => true,                'constraints' => $imageConstraints            ])            ->add('imageFileName', HiddenType::class, [                'mapped' => false,            ])            ->add('oldPassword', PasswordType::class, array('label'=>'Current password', 'mapped' => false,            'required' => false,'error_bubbling' => true,'constraints' => new UserPassword([                'message' => "Please enter user's current password",                ])))我已經(jīng)成功實(shí)現(xiàn)了該功能。但我的問題是我每次提交表單時(shí)都需要輸入文件,oldPassword否則它會(huì)根據(jù)用戶當(dāng)前密碼的需要給出驗(yàn)證錯(cuò)誤。我想更改它,因?yàn)閮H當(dāng)輸入新密碼時(shí),我才需要驗(yàn)證提交的舊密碼。有什么可能的方法來實(shí)現(xiàn)這一點(diǎn)。希望有人可以幫助..
查看完整描述

1 回答

?
蝴蝶不菲

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊

如果要修改字段的驗(yàn)證方法,可以使用 Symfony?FormEvents

有了這個(gè),您可以將 EventListener 添加到 oldPassword 字段:

?$builder

? ? ? ? ? ? ->add(

? ? ? ? ? ? ? ? 'oldPassword',

? ? ? ? ? ? ? ? PasswordType::class,

? ? ? ? ? ? ? ? array(

? ? ? ? ? ? ? ? ? ? 'label' => 'Current password',

? ? ? ? ? ? ? ? ? ? 'mapped' => false,

? ? ? ? ? ? ? ? ? ? 'required' => false,

? ? ? ? ? ? ? ? ? ? 'error_bubbling' => true,

? ? ? ? ? ? ? ? ? ? // without constraint, so the form can be submitted without

? ? ? ? ? ? ? ? )

? ? ? ? ? ? )

? ? ? ? ? ? ->addEventListener(

? ? ? ? ? ? ? ? FormEvents::PRE_SUBMIT,

? ? ? ? ? ? ? ? function (FormEvent $event) use ($options) {

? ? ? ? ? ? ? ? ? ? // if plainPassword is set, then overwrite the form field with check

? ? ? ? ? ? ? ? ? ? if (isset(($event->getData())['plainPassword'])) {

? ? ? ? ? ? ? ? ? ? ? ? $form = $event->getForm();

? ? ? ? ? ? ? ? ? ? ? ? $form->add(

? ? ? ? ? ? ? ? ? ? ? ? ? ? 'oldPassword',

? ? ? ? ? ? ? ? ? ? ? ? ? ? TextType::class,

? ? ? ? ? ? ? ? ? ? ? ? ? ? [

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 'label' => 'Current password',

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 'required' => true,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 'constraints' => new UserPassword(

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 'message' => "Please enter user's current password",

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ]

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ),

? ? ? ? ? ? ? ? ? ? ? ? ? ? ]

? ? ? ? ? ? ? ? ? ? ? ? );

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? );


查看完整回答
反對(duì) 回復(fù) 2023-08-06
  • 1 回答
  • 0 關(guān)注
  • 116 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)