簡體   English   中英

Symfony表格:有效提交后如何處理字段?

[英]Symfony form: how to process a field after valid submission?

我已經創建了一個Symfony 2表單來編輯EmailAccount實體

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

但是, $password字段是使用數據庫中的AES加密的。

因此,當用戶以表單形式發布my-secret-password時,我想在實體中設置一個不同的值(加密值)。

要加密,我有一個簡單的服務可以執行此操作: $encrypter->encrypt($string);

那我該怎么做呢?

這是我當前的表單類型:

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';
    }
}

您可以通過調用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

因此,您可以在檢查表單有效后對密碼進行加密:

$form->bind($request);

if ($form->isValid()
{
    $newPassword = $encrypter->encrypt($form->get('password')->getData());
    $user->setPassword($newPassword);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM