我正在练习在 symfony2 中做一个简单的注册表单。我创建了一个带有plainPassword 字段和一个嵌入式用户文档(我正在使用mongoDB)和两个FormTypes 的Register 模型。User 文档在密码字段中具有 NotBlank 约束。
我希望从注册模型中读取plainPassword,对其进行哈希处理并将其设置为用户文档。这是为了在散列之前验证最大/最小长度。
问题是,当我绑定表单时,Symony 似乎已经保存了一个错误数组,其中 User.password 字段为空。因此,即使我在绑定后设置散列通行证,表单也永远不会有效。我总是收到“此值不应为空”
最后,从 User.password 中删除 NotBlank 约束会导致“您无法在未绑定的表单上调用 isValid()”。无论哪种方式,我都不希望删除约束,但我至少希望看到它起作用。
一些代码:
class RegisterController extends Controller {
/**
* @Route("/register/", name="register_new")
* @Template()
*/
public function indexAction(Request $request)
{
$form = $this->createForm(new RegistrationType(), new Registration());
if ($request->getMethod() == 'POST') {
$form->bindRequest($request);
$register = $form->getData();
$user = $register->getUser();
$user->setPassword(sha1($register->getPlainPassword()));
$form->setData($register);
if ($form->isValid()) {
return $this->redirect($this->generateUrl('login_form'));
}
}
return array('form' => $form->createView());
}
}