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.

57
demandé sur Lars Strojny 2012-01-18 21:36:34

8 réponses

Cette méthode n'existe pas. Je fais typiquement {% if form.points.vars.errors|length %} .

79
répondu Kris Wallsmith 2012-01-18 18:35:52

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 %}
96
répondu birko 2013-07-24 06:07:23

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 %}
17
répondu jkucharovic 2012-05-16 08:42:39

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

12
répondu d3uter 2014-11-02 22:20:42

Puisqu'un tableau vide se résout à false, vous pouvez raccourcir votre contrôle existant à

{% if form.WIDGET_NAME.get('errors') %}
0
répondu Riccardo Galli 2014-07-24 10:31:36

C'est ce que j'utilise :

 <div class="form-group {{ form.brand.vars.errors|length > '' ? 'has-error' }}">
0
répondu mrDjouk 2017-07-12 10:12:22

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.

-1
répondu adavea 2017-05-23 11:46:34

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) : '' }}
-2
répondu Belga 2014-08-04 14:00:23