0

Ich verwende Zend\Form\Element\MultiCheckbox mit Zend\Form\View\Helper\FormMultiCheckbox:Wie kann ich das globale Label mit FormMultiCheckbox in ZF2 anzeigen lassen?

MyFieldset.php

// namespace ...; 
// use ....; 
class MyFieldset extends Fieldset 
{ 
    // ... 
    public function init() 
    { 
     parent::init(); 
     $this->add(
      [ 
       'type' => 'multi_checkbox', 
       'name' => 'mymulticheckbox', 
       'options' => [ 
        'label' => _('global label'), 
        'label_attributes' => [ 
         'class' => 'col-md-3', 
        ], 
        'value_options' => [ 
         [ 
          'value' => 'foo', 
          'label' => 'FOO', 
         ], 
         [ 
          'value' => 'bar', 
          'label' => 'BAR', 
         ], 
         [ 
          'value' => 'buz', 
          'label' => 'BUZ', 
         ], 
        ] 
       ], 
      ] 
     ); 
    } 
    // ... 
} 

myform.phml

use Zend\Form\View\Helper\FormMultiCheckbox; 
echo $this->formMultiCheckbox($myFieldset->get('mymulticheckbox'), FormMultiCheckbox::LABEL_PREPEND); 

Es funktioniert, aber die "global label" wird nicht angezeigt. Es wird angezeigt, wenn ich Zend\Form\View\Helper\FormElement verwende, aber die FormMultiCheckbox scheint die "globale label" zu ignorieren.

Wie zu machen FormMultiCheckbox die label der Checkbox-Liste anzeigen?

Antwort

0

Haben Sie versucht mit formRow(). Für mich funktioniert es. Dies scheint nicht in formMultiCheckbox() verwaltet werden. Siehe Zeilen 182-193, Datei zend-form/src/View/Helper/FormRow.php.

// Multicheckbox elements have to be handled differently as the HTML standard does not allow nested 
// labels. The semantic way is to group them inside a fieldset 
if ($type === 'multi_checkbox' 
    || $type === 'radio' 
    || $element instanceof MonthSelect 
    || $element instanceof Captcha 
) { 
    $markup = sprintf(
     '<fieldset><legend>%s</legend>%s</fieldset>', 
     $label, 
     $elementString 
    ); 
+0

Vielen Dank für Ihre Antwort! Ja, wie ich in meiner Frage geschrieben habe, habe ich es schon mit dem 'FormRow' View Helfer probiert. Leider hat es den Nachteil, dass dann die Labelposition nicht wie gewünscht definiert werden kann ('formRow ($ field, 'prepend')' funktioniert nicht für 'MultiCheckbox's). Am Ende habe ich versucht, alles manuell zu erledigen: ''

'. $ this-> translate ($ myFieldSet-> get ('mymulticheckbox') -> getLabel()). ''. $ this-> formMultiCheckbox ($ myFieldSet-> get ('mymulticheckbox'), FormMultiCheckbox :: LABEL_PREPEND) 'Es ist hässlich, aber es funktioniert. – automatix

+0

Oh ja, keine andere Alternative. –