Как добавить класс и идентификатор к элементу формы в Zend Framework 2.2.4
HTML, который мне нужен:
<label for="text_field_username">User Name</lable>
<input type="text" id="text_field_username" name="text_field_username" class="form-control" />
Я хочу, чтобы значение for метки связывалось с идентификатором входного сигнала. Таким образом, пользователь может щелкнуть по метке, чтобы выделить ввод. Более полезно для чекбокса. Также, что менее важно, я хочу, чтобы в поле ввода был класс.
То, что я пробовал и не работает для меня:
echo $this->formRow($form->get('usr_name'));
Я также попытался использовать частичную компоновку.
echo $this->formElement($element);
Прежде чем опубликовать этот вопрос, я наткнулся на это документация framework.zend.com/manual/2.2/en/modules/zend.form.view.helpers.html#formlabel
Это не работает. Он добавляет "За", но ни на что не указывает. !?
2 ответа:
Просмотр партиалов помогает с визуализацией формы, однако они не имеют дело со свойствами самих элементов формы. Этим занимается класс форма и коллекцию элементов формы (т. е. объект textelement)
Вы можете использовать
setAttribute('class', 'class name')
на любом элементе формыИтак, в рамках метода
init()
вашей формы это должно работать:$element = $this->getElement('text_field_username'); $element->setAttribute('class', 'class name');
Вы также можете установить это в свой унаследованный класс помощника формы следующим образом:
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:', ), )); } }
И в вашем представлении просто позвоните:
$nex=$this->app; //app is the form object we passed from controller to view echo $this->formElement($nex->get('default_widget'));