2012-09-06 6 views
5

Um ein Texteingabefeld zu erstellen Ich benutzte Code in zend framework2 Follingzf2 create Auswahl/Drop-Down-Box und füllen Optionen im Controller?

use Zend\Form\Form; 

class Loginform extends Form 
{ 
    public function __construct() 
    { 
      $this->add(array(   
      'name' => 'usernames', 
      'attributes' => array(
       'id' => 'usernames',     
       'type' => 'text', 
      ), 
      'options' => array(
       'label' => 'User Name', 
      ), 
     ));  
    } 
} 

und ich kann die Werte in Controller-Aktion mit

$form = new Loginform(); 
$form->get('usernames')->setAttribute('value', 'user 1'); 

Jede Idee, bevölkern, wie kann ich das gleiche tun für die Auswahl/Dropdown-Box in ZF2?

Ref: zend framework 2 documentation

Antwort

14

Überprüfen Sie die API (die Dokumentation sind schrecklich, so überprüfen Sie den Code).

die Zend\Form\Element\Select Klasse verwenden und die Optionen-Attribut wie folgt:

$element->setAttribute('options', array(
    'key' => 'val', 
    ... 
)); 

Output das Element der FormRow oder FormSelect View Helfer verwenden.

Diese Seite ist auch eine gute Quelle für Beispiele und Informationen: http://zf2.readthedocs.org/en/latest/modules/zend.form.quick-start.html

Beispiel:

$this->add(array(  
    'type' => 'Zend\Form\Element\Select',  
    'name' => 'usernames', 
    'attributes' => array(
     'id' => 'usernames',     
     'options' => array(
      'test' => 'Hi, Im a test!', 
      'Foo' => 'Bar', 
     ), 
    ), 
    'options' => array(
     'label' => 'User Name', 
    ), 
));  

Sie können auch die Optionen im Controller zuweisen, wenn Sie benötigen, wie oben gezeigt.

+0

können Sie mir alle Beispiel Auswahlbox zur Verfügung stellen oder meine obigen Code – Developer

+0

Geschehen rechange, helfen ist das? –

+0

@Developer: Danke für die Bearbeitung. –

2

Zend Framework 2.2, wählen Sie Optionen wurden in ‚Optionen‘ verschoben statt ‚Attribute‘ so obigen Code auch geändert werden

$this->add(array(  
    'type' => 'Zend\Form\Element\Select',  
    'name' => 'usernames', 
    'attributes' => array(
     'id' => 'usernames'    
    ), 
    'options' => array(
     'label' => 'User Name', 
     'options' => array(
      'test' => 'Hi, Im a test!', 
      'Foo' => 'Bar', 
     ), 
    ), 
)); 
2

Wenn Sie es in der Steuerung tun wollen, dann tun Sie es wie auf diese Weise

$form->get('ELEMENT_NAME')->setAttribute('options' ,array('KEY' => 'VALUE')); 
3
$form = new Loginform();  
$form->get('usernames')->setValueOptions($usernames); 

$ Benutzernamen ist ein Array

Ref Click Here