Vérification Simple si le champ du formulaire contient des erreurs dans le modèle de brindille
dans le modèle de brindille je vérifie si un champ a une erreur comme ceci:
{% if form.points.get('errors') is not empty %}
y a-t-il une méthode comme:
{% if form.points.hasErrors() %}
pour faire plus simple? Ce n'est pas une grosse différence, mais si Je ne peux pas le faire plus facilement pourquoi pas.
8 réponses
Cette méthode n'existe pas. Je fais typiquement {% if form.points.vars.errors|length %}
.
une meilleure façon que j'ai trouvée est d'utiliser ce genre de code
{% if not form.vars.valid %}
<div class="alert alert-error">
{{ form_errors(form) }}
</div>
{% endif %}
vous pouvez également vérifier la présence d'erreurs lors de la suppression du rendu du champ:
{% block field_row %}
{% spaceless %}
<div class="control-group {% if errors %}error{% endif %}">
{{ form_label(form) }}
<div class="controls">
{{ form_widget(form) }}
{{ form_errors(form) }}
</div>
</div>
{% endspaceless %}
{% endblock field_row %}
Pour plus de personnalisation du formulaire je fais:
<div class="form-group {% if form.MYFORMINPUT.vars.valid==false %}has-error{% endif %}">
//some twisted divs
{{form_label(form.MYFORMINPUT)}}
{{form_widget(form.MYFORMINPUT)}}
</div>
Sf2.5
Puisqu'un tableau vide se résout à false, vous pouvez raccourcir votre contrôle existant à
{% if form.WIDGET_NAME.get('errors') %}
C'est ce que j'utilise :
<div class="form-group {{ form.brand.vars.errors|length > '' ? 'has-error' }}">
j'ai eu un problème similaire, mais form.points
n'existe pas dans mes modèles de brindilles.
j'ai dû obtenir le nombre d'erreurs dans le contrôleur, puis le passer dans mes gabarits comme une variable. $form->getErrors()
ne se comporte pas comme vous pourriez vous attendre dans votre contrôleur. Voir cette question de SO pour une fonction qui obtiendra les erreurs de forme correctement.
j'ai créé une extension de brindille pour gérer ce: mon extension
public function hasError($string)
{
if(strlen($string) > 4)
return true;
return false;
}
je l'utilise comme ceci dans twig
{{ has_error(form_errors(form.username)) ? form_errors(form.username) : '' }}