2013-10-04 15 views
7

HTML I potrzeba:Jak dodać klasę i id do utworzenia elementu w Zend Framework 2.2.4

<label for="text_field_username">User Name</lable> 
<input type="text" id="text_field_username" name="text_field_username" class="form-control" /> 

chcę na etykiety do odwołuje się do identyfikatora wejścia. W ten sposób użytkownik może kliknąć etykietę, aby podświetlić dane wejściowe. Bardziej przydatne dla pola wyboru. Również, mniej ważne, chcę mieć klasę do pola wejściowego.

Co próbowałem i nie działa na mnie:

echo $this->formRow($form->get('usr_name')); 

Próbowałem również użyć częściowy układ.

echo $this->formElement($element); 

Przed wysłaniem to pytanie natknąłem tej dokumentacji framework.zend.com/manual/2.2/en/modules/zend.form.view.helpers.html#formlabel

To nie działa . Dodaje for, ale nic nie wskazuje. !?

Odpowiedz

9

Wyświetlenia częściowe pomagają w renderowaniu formularza, nie mają jednak wpływu na właściwości samych elementów formularza. To jest rozpatrywane przez klasy formularza i to zbiór elementów formularza (tj TextElement)

Można użyć setAttribute('class', 'class name') na każdym elemencie formularza

więc w sposobie formularza init() to powinno działać:

$element = $this->getElement('text_field_username'); 
$element->setAttribute('class', 'class name'); 
+0

Jestem całkiem pewien, że to faktycznie 'setAttrib()' –

+1

@MatthewRapati Z ZF2 nazwa to 'setAttribute()' –

+0

@GuilhemSoulas dobrze, że lepszą nazwą! dzięki za poinformowanie mnie –

8

można również ustawić to w dziedziczonej klasie postać pomocnika tak:

namespace Application\Form; 
use Zend\Form\Form; 
class NexForm extends Form 
{ 
public function __construct($name = null) 
{ 
    parent::__construct('Nex'); 
    $this->setAttribute('method', 'post'); 
    $this->setAttribute(
     'enctype', 
     'multipart/form- data' 
    ); 
    $this->add(array(
     'name' => 'default_widget', 

     'attributes' => array(
      'type' => 'text', 
      'id' => 'default_widget', 
      'class' => 'mtz-monthpicker-widgetcontainer', 
      'required' => 'required', 
     ), 
     'options' => array(
      'label' => 'Please choose the month of records you want to display:', 
     ), 
    )); 
} 
} 

i tylko w widoku zadzwoń:

 $nex=$this->app; //app is the form object we passed from controller to view 
    echo $this->formElement($nex->get('default_widget'));