當欄位為空時,我不知道如何一個接一個地顯示一個表單錯誤:它適用于電子郵件,但不適用于密碼、性別等......我相信它來自我創建的條件,因為我得到了正確的當我洗掉它們并將它們粘貼到條件之外時出現錯誤訊息。
哪里錯了?
register.html.twig
{% extends 'base.html.twig' %}
{% block main %}
{{ form_start(userform, {'attr': {'novalidate': 'novalidate'}} ) }}
{% set formErrors = userform.vars.errors.form.getErrors(true) %}
{{ dump(userform.vars.value.password|length) }}
{% if formErrors|length %}
<div class="alert alert-danger text-center" role="alert">
{% if userform.vars.value.email == null or userform.vars.value.email != 'email' or userform.vars.value.email != 'unique' %}
{{ form_errors(userform.email) }}
{% elseif userform.vars.value.password|length < 6 %}
{{ form_errors(userform.password.first) }}
{% elseif userform.vars.value.gender == null or (userform.vars.value.gender != 'male' and userform.vars.value.gender != 'female' and userform.vars.value.gender != 'non-binary') %}
{{ form_errors(userform.gender) }}
{% elseif userform.vars.value.firstname|length < 2 %}
{{ form_errors(userform.firstname) }}
{% elseif userform.vars.value.lastname|length < 2 %}
{{ form_errors(userform.lastname) }}
{% elseif userform.vars.value.birthdate == null %}
{{ form_errors(userform.birthdate) }}
{% elseif userform.vars.value.occupation|length < 2 %}
{{ form_errors(userform.occupation) }}
{% elseif userform.vars.value.nationality == null %}
{{ form_errors(userform.nationality) }}
{% elseif userform.vars.value.nativelanguage == null %}
{{ form_errors(userform.nativelanguage) }}
{% endif %}
</div>
{% endif %}
uj5u.com熱心網友回復:
{{ form_errors(form) }} 不是為了測驗欄位是否為空或是否有效,而只是顯示來自 Symfony Validator 的驗證訊息,例如 Assert。
例如,當您說:
{% if userform.vars.value.email == null %}
是的,當您第一次訪問 form 的 url 時,電子郵件始終為空,但這不是我們測驗電子郵件是否為空白的方式,我們不在 twig 中測驗它。
請記住 {{ form_errors(form) }} 僅用于顯示錯誤訊息,僅用于顯示
讓我們看這個例子:
class User implements UserInterface, \Serializable, PasswordAuthenticatedUserInterface
{
#[Assert\NotBlank(message: 'Email ne doit pas être vide')]
#[Assert\Email(message: 'Email n\'est pas valide')]
private ?string $email;
#[Assert\NotBlank]
#[Assert\Length(min: 3, max: 32, minMessage: 'msg min ...', maxMessage: 'msg max ....')]
private $plainPassword;
在用戶類中,我們已經添加了一個驗證測驗,如果電子郵件是空的或者是無效的 usnig Assert。
twig 中 form_erros 的作用只是 顯示此錯誤訊息(如果它們存在)但不測驗驗證
因此,您可以在 twig 中執行的操作是測驗表單是否有效,如果無效則顯示錯誤:
{% if not userform.vars.valid %}
{{ form_errors(userform.email) }} // if email is empty or not valid, it will show the message of Assert in user class
{{ form_errors(userform.firstName) }}
{{ form_errors(userform.lastName) }}
{{ form_errors(userform.plainPassword.first) }}
{% endif %}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/518615.html
標籤:形式交响乐
