У меня есть контроллер с 2 функциями, каждая из которых генерирует форму и передает ее в представление.
Первый предназначен для профиля пользователя и отлично подбирает файл Validation.yml - проверяя, чтобы имя и адрес электронной почты не были пустыми.
В том же файле проверки я установил пароль не пустым.
Однако вторая форма, которая позволит пользователю изменить свой пароль, не хочет проверять.
Вторая форма - это, в основном, копия первой, но с двумя полями: «пароль» и «пароль подтверждения».
Конечно, поскольку мое поле называется "пароль", оно должно соответствовать переменной в моем объекте User? (это то, что происходит с первой формой)
Код:
passwordAction
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()));
}
}
ветка формы пароля: (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