2016-06-01 8 views
0

Ich habe eine Form, die ich in einem Zweig Datei machen:form_label() nicht mit boolean Typ arbeiten

Form:

$builder 

     ->add('text', CKEditorType::class, array (
      'config_name' => 'my_config', 
      'label' => "tracker.event.labels.text" 

     )) 

     ->add('effTime', IntegerType::class, array (
      'data' => 0, 
      'label' => "tracker.event.labels.efftime" 
     )) 

     ->add('private', CheckboxType::class, array(
      'label' => "tracker.event.private.title", 
      'data' => false, 
      'required' => false 
     )) 
    ; 

Zweig Datei:

{% form_theme formadd 'AtgpAppBundle:_Form:_form.html.twig' %} 

        {{ form_start(formadd) }} 
        {{ form_errors(formadd) }} 
        <div class ="row"> 
         <span class="col-md-2"> 
          {{form_label(formadd.text)}} 
         </span> 
         <span class="col-md-10"> 
          {{form_errors(formadd.text)}} 
          {{form_widget(formadd.text)}} 
         </span> 
        </div> 
        <div class="row"> 
         <span class="col-md-2"> 
          {{form_label(formadd.effTime)}} 
         </span> 
         <span class="col-md-10"> 
          {{form_errors(formadd.effTime)}} 
          {{form_widget(formadd.effTime)}} 
         </span> 
        </div> 
        <div class="row"> 
         <span class="col-md-2"> 
          {{form_label(formadd.private)}} 
         </span> 
         <span class="col-md-1"> 
          {{form_errors(formadd.private)}} 
          {{form_widget(formadd.private) }} 
         </span> 
         <span class="col-md-9"> 
          {{ "tracker.event.private.help" |trans }} 
         </span> 
        </div> 
        {{ form_end(formadd) }} 

Alles funktioniert gut, außer für die letzte Reihe.

Das col-md-2, wo die Bezeichnung für "privat" sein sollte, ist leer.

Aus irgendeinem Grund form_widget erstellt eine andere

<div class="row"> 

innerhalb der Spanne "class = col-md-1"

mit dem Etikett und der Innenseite Checkbox.

Here's how the whole row renders

würde ich das Etikett richtig an der richtigen Stelle angezeigt mögen. Die Anweisung form_label() wird einfach ignoriert, wenn ich sie nicht schreibe, rendert sie dasselbe.

Wie kann ich das tun und was ist falsch an meinem Code?

Danke

EDIT: Ich fand heraus, dass ich nur das Etikett Wert auf false gesetzt und es direkt in Zweig schreiben. Allerdings habe ich immer noch keine Ahnung, warum die Anweisung form_label mit booleans ignoriert wird.

Antwort

0

ich die Antwort auf meine Frage in the documentation gefunden.

Wir können dies lesen:

Wenn Sie die Bootstrap Form Themen verwenden und die Felder von Hand machen, ruft form_label() für eine Checkbox/Radiofeld zeigt nichts. Aufgrund von Bootstrap-Interna wird das Label bereits von form_widget() angezeigt.

Um dies:

Also, was ich tun musste, das Kontrollkästchen-Widget Block von dieser außer Kraft zu setzen war

{% block checkbox_widget %} 
     <input type="checkbox" {{ block('widget_attributes') }}{% if value is defined %} value="{{ value }}"{% endif %}{% if checked %} checked="checked"{% endif %} /> 
{% endblock %} 
0

wilde Vermutung: Ihre Etiketten sind wie tracker.event.labels.XXXXX wo als der letzte tracker.event.private.title ist, sollte es tracker.event.labels.private.title sein nicht

+0

Diese Syntax für die Übersetzungen ist, kann es nicht verwandt sein. Ich kann es ändern, um mit den anderen übereinzustimmen, aber es löst das Problem nicht. – abernard

Verwandte Themen