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
la source

8 ответов

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

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

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 10:07:23
la source

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 12:42:39
la source

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-03 01:20:42
la source

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 14:31:36
la source

C'est ce que j'utilise :

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

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 14:46:34
la source

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 18:00:23
la source

Autres questions sur