我正在使用 EasyAdminBundle 并想為管理面板創建更改密碼功能。一切正常,但是有一個問題,即當 RepeatedType 欄位不同以及 oldPassword 不正確時,該表單不顯示錯誤。錯誤正確地從 formType 發送到控制器,但是樹枝不顯示它們。更改管理員密碼型別
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('oldPassword', PasswordType::class, [
'constraints' => [
new NotBlank(),
new Length(['min' => 4])
],
])
->add('newPassword', RepeatedType::class, [
'type' => PasswordType::class,
'error_bubbling' => true,
'invalid_message' => 'The password fields must match.',
'first_options' => ['label' => 'New Password'],
'second_options' => ['label' => 'Repeat New Password'],
])
->add('save', SubmitType::class, [
'attr' => ['class' => 'btn btn-primary'],
])
;
}
更改管理員密碼控制器
public function changeAdminPassword(Request $request): Response
{
$ex = new ChangeAdminPasswordDto();
$form = $this->formFactory->create(ChangeAdminPasswordType::class, $ex);
$view = $form->createView();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
if (($this->changeAdminPassword)($this->getUser(), $form->getData())) {
return $this->redirectToRoute('admin_dashboard');
}
$form->addError(new FormError('Current password is not correct'));
}
return $this->render('bundles/EasyAdminBundle/changeAdminPassword.html.twig', [
'form' => $view,
]);
}
changAdminPassword.html.twig
{% extends '@EasyAdmin/layout.html.twig' %}
{% block content_title %}
<div class="content-header-title">
<h1 class="title">
Change password
</h1>
</div>
{% endblock %}
{% block main %}
{{ form_errors(form) }}
{{ form_start(form) }}
<div class="col-md6 col-xxl-5">
<div class="field-text form-group">
{{ form_label(form.oldPassword) }}
<div class="form-widget">
{{ form_widget(form.oldPassword, { 'attr': {'class': 'form-control'}}) }}
</div>
</div>
<div class="field-text form-group">
{{ form_label(form.newPassword.first) }}
<div class="form-widget">
{{ form_widget(form.newPassword.first, { 'attr': {'class': 'form-control'}}) }}
</div>
</div>
<div class="field-text form-group">
{{ form_label(form.newPassword.second) }}
<div class="form-widget">
{{ form_widget(form.newPassword.second, { 'attr': {'class': 'form-control'}}) }}
</div>
</div>
</div>
<div class="page-actions">
{{ form_row(form.save) }}
</div>
{{ form_end(form) }}
{% endblock %}
uj5u.com熱心網友回復:
您在此處提交之前創建表單視圖$view = $form->createView();。任何驗證后都不會呈現任何錯誤訊息...
改變這個:
return $this->render('bundles/EasyAdminBundle/changeAdminPassword.html.twig',
[
'form' => $view,
]);
對此:
return $this->render('bundles/EasyAdminBundle/changeAdminPassword.html.twig',
[
'form' => $form->createView(),
]);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/448591.html
