du7999 2014-04-17 10:04 采纳率: 100%
浏览 38
已采纳

Symfony表单:如何在有效提交后处理字段?

I have made a Symfony 2 form to edit a EmailAccount entity

class EmailAccount
{
    protected $host;
    protected $user;
    protected $password;
}

However the $password field is encrypted with AES in database.

So when the user posts my-secret-password in the form, I want to set a different value in the entity (the encrypted value).

To encrypt, I have a simple service that does this: $encrypter->encrypt($string);

So how can I do this?

Here is my current form type:

class EmailAccountType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('host', 'text');
        $builder->add('user', 'text');
        $builder->add('password', 'password');
        $builder->add('save', 'submit');
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults([
            'data_class' => EmailAccount::class,
        ]);
    }

    public function getName()
    {
        return 'emailAccount';
    }
}
  • 写回答

1条回答 默认 最新

  • ds20021205 2014-04-17 10:19
    关注

    You can get values from form in controller by calling getData():

        $form->bind($request); //after this 
    
        $data = $form->getData(); //all fields array
        $username = $form->get('username')->getData(); // only username field value
        $username = $form->get('username')->getViewData();//before mapping/traansformation
    

    So you can encrypt password after checking that form is valid:

    $form->bind($request);
    
    if ($form->isValid()
    {
        $newPassword = $encrypter->encrypt($form->get('password')->getData());
        $user->setPassword($newPassword);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 基于单片机数字电压表电路组成及框图
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line