du7999 2014-04-17 02: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 02: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 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部