Forms Symfony2代码组织:在持久化到db之前,加密密码的逻辑应该放在哪里?
如果使用数据库存储用户,则可以保存用户信息,如下所示: (来自) 但是,我想创建一个可重用的用户表单:Forms Symfony2代码组织:在持久化到db之前,加密密码的逻辑应该放在哪里?,forms,symfony,code-organization,Forms,Symfony,Code Organization,如果使用数据库存储用户,则可以保存用户信息,如下所示: (来自) 但是,我想创建一个可重用的用户表单: namespace App\Bundle\WebBundle\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilder; class UserType extends AbstractType { public function buildForm(FormBuilde
namespace App\Bundle\WebBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
class UserType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('username')
->add('password')
;
}
public function getName()
{
return 'app_bundle_webbundle_usertype';
}
}
并在控制器中使用表单:
(来自)
如果您同时需要用户注册表单和用户配置文件编辑表单,那么您应该将本文开头显示的用于散列密码的代码(以及生成salt的代码)放在哪里,以使其可重用并与$form->bindRequest()方法兼容,等等?我建议调查:。即使您想编写自己的解决方案,您也可以从该捆绑包中获得非常好的想法。密码加密最好放在Doctrine的@PrePersist回调方法中。在模型中 在setter中,可以添加加密
namespace App\Bundle\WebBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
class UserType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('username')
->add('password')
;
}
public function getName()
{
return 'app_bundle_webbundle_usertype';
}
}
if ($request->getMethod() == 'POST') {
$form->bindRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getEntityManager();
$em->persist($task);
$em->flush();
return $this->redirect($this->generateUrl('task_success'));
}
}