【发布时间】:2023-03-08 20:53:01
【问题描述】:
我有一个具有 2 个函数的控制器,每个函数都生成一个表单并将其传递给视图。
第一个是用于用户配置文件并完美地选择 Validation.yml 文件 - 检查名称和电子邮件是否为空白。
在同一个验证文件中,我将密码设置为不为空。
但是,允许用户更改密码的第二种形式不想验证。
第二种形式基本上是第一种形式的副本,但有两个字段,“password”和“confirmPassword”。
当然,因为我的字段被称为“密码”,它应该与我的用户实体中的变量匹配? (这是第一种形式的情况)
一些代码:
密码操作
public function passwordAction(Request $request)
{
$form = $this->createFormBuilder()
->add('password', null, array('label' => 'New Password'))
->add('confirmPassword', null, array('label' => 'Confirm Password'))
->getForm();
if ($request->getMethod() == 'POST') {
$form->bindRequest($request);
if ($form->isValid()) {
// perform some action, such as saving the task to the database
//return $this->redirect($this->generateUrl('dashboard'));
}
}
return $this->render('UserBundle:Dashboard:password.html.twig', array('form' => $form->createView()));
}
}
password form twig: (nb - novalidate 是关闭 html5 验证!!)
<form action="{{ path('update_password') }}" method="post" {{ form_enctype(form) }} novalidate="novalidate">
<fieldset>
<legend>Change Your Password</legend>
{{ form_row(form.password) }}
{{ form_row(form.confirmPassword) }}
</fieldset>
<fieldset>
<div class="actions">
<input class="btn primary" type="submit" value="Update" />
<input class="btn error" type="reset" value="Reset">
</div>
</fieldset>
</form>
validation.yml:
UserBundle\Entity\Profile:
properties:
name:
- NotBlank: ~
UserBundle\Entity\User:
properties:
email:
- NotBlank: ~
- Email:
message: The email "{{ value }}" is not a valid email.
checkMX: true
password:
- NotBlank: ~
routing.yml:
password:
pattern: /password
defaults: { _controller: UserBundle:Dashboard:password }
update_password:
pattern: /password
defaults: { _controller: UserBundle:Dashboard:password }
requirements:
_method: POST
【问题讨论】: