webentwicklung-frage-antwort-db.com.de

So fügen Sie Attribute hinzu, die mit Zend/Form im Zend-Framework erstellt wurden 2

Ich füge meiner Seite Formulare mit Zend/Form hinzu.

Ich füge Elemente hinzu, indem ich sie wie folgt definiere: 

    $this->add(array(
            'name' => 'value',
            'attributes' => array(
                    'type'  => 'text',
                    'id' => 'value',
                    'autocomplete' => 'off',
                    'placeholder' => 'Cost',
            ),
            'options' => array(
                    'label' => 'Cost',
            ),
    ));

Wie Sie sehen, gibt es einen 'label' => 'cost'-Knoten, der ein Label generiert, das zum Eingabeelement passt. 

Wie füge ich diesem Label Klassen und Attribute hinzu? 

23
El Dorado

Bitte probieren Sie es aus, ich habe es nicht getestet oder verwendet, aber anhand der Quelle sollte es richtig funktionieren:

$this->add(array(
    'name'       => 'value',
    'attributes' => array(),
    'options'    => array(
        'label_attributes' => array(
            'class'  => 'mycss classes'
        ),
        // more options
    ),        
));

Wenn dies nicht funktioniert, bitte hinterlassen Sie mir einen Kommentar. Wenn es nicht funktioniert, ist es mit diesem Ansatz nicht möglich, da FormLabel den validAttributes ziemlich einschränkt:

protected $validTagAttributes = array(
    'for'  => true,
    'form' => true,
);
48
Sam

Dies funktioniert gut in Zend Framework 2.3:

$this->add(array(
  'name' => 'userName',
  'attributes' => array(
      'type'  => 'text',
      'class' => 'form-control',
      'placeholder' =>'Username',
  ),
  'options' => array(
      'label' => 'Username',
      'label_attributes' => array('class' => 'control-label')
  ),

));
1
speedy32

Für den programmatischen Ansatz auf ZF2 + versuchen Sie Folgendes:

$element->setOptions(array(
    'label_attributes' => array(
        'style' => 'color:gray;'
    )
));

Inspiriert von Damons Antwort.

0
Dennis
$element->setOptions(array('label_class' => array('class' => 'control-label')));

Produziert Code wie folgt:

<label class="control-label">
  <input type="radio" name="option1" id="option1" value="1">
  Option 1
</label>
<label class="control-label">
  <input type="radio" name="option2" id="option2" value="2">
  Option 2
</label>

Ich habe es versucht. Es funktioniert in Zend Framework One. 

Beachten Sie, wenn Sie verwenden 

$ element-> setOptions (array ('label_attributes' => array ('class' => 'control-label')));

sie erhalten die unerwünschte Wirkung aus irgendeinem Grund 

<label attributes="control-label">
  <input type="radio" name="option1" id="option1" value="1">
  Option 1
</label>
0
Damon Hogan