Как да задам позиция за квадратчета за отметка/радиобутони в Zend Framework 2?

Пробвах го така:

<?php
echo $this->formRow($form->get('weekday'), Zend\Form\View\Helper\FormRow::LABEL_PREPEND);
?>

Но етикетите все още остават зад квадратчетата за отметка.

въведете описание на изображението тук

Как да задам правилно позицията на етикета?


person automatix    schedule 10.04.2013    source източник
comment
Можете ли да опитате да зададете option { label_position = 'append' } на вашия weekday-елемент? :) Това вече може да го реши, но не съм много сигурен, ако не, имам готово по-дълго решение :P   -  person Sam    schedule 11.04.2013


Отговори (1)


Кутия за отметка от седмицата ли е? Ако е така, използвайте метода за изобразяване formMultiCheckbox вместо formRow и етикетът ще бъде позициониран където желаете.

Отстранявах грешки в процеса и това е странно поведение. Когато се извика класът Zend/Form/View/Helper/FormRow, позицията на етикета се инициализира, както очаквате (LABEL_PREPEND).

По-късно се извиква класът Zend/Form/View/Helper/FormMultiCheckbox, но той не наследява позицията от FormRow и използва стойността си по подразбиране, която е не искате, LABEL_APPEND.

Проверете метода __invoke и на двата класа и ще видите.

person lluisaznar    schedule 11.04.2013
comment
Трябва да се отбележи, че <fieldset> и <legend> трябва да бъдат изобразени ръчно, тъй като FormMultiCheckbox изобрази само квадратчетата за отметка. Ето защо поисках другия опит по-горе със задаване на label_position като опция за елемента, което трябва да реши проблема;) - person Sam; 11.04.2013
comment
Благодаря ви за отговора! Сега работи! Това поведение не е толкова странно. Има два типа етикети в радио/множествено поле за отметка: етикетът на целия набор и етикетът на всеки елемент: <label>type_1<label>type_2<input /></label><label>type_2<input /></label></label> (в ZF type_2 не получава label етикет по подразбиране). Мисля, че е добре, че позицията на етикета на type_1 (целия набор от квадратчета за отметка) не се наследява от всяко квадратче за отметка (type_2). Другият въпрос е: как да настроя и двете? Тъй като човек не може да вложи formRow(...) и formMultiCheckbox(...) едно в друго... - person automatix; 11.04.2013
comment
@automatix опита ли да зададеш опцията label_position? - person Sam; 11.04.2013
comment
Какво написах в моя коментар вчера е грешно. Така или иначе не мога да възпроизведа това поведение сега. $this->formMultiCheckbox($form->get('weekday'), FormMultiCheckbox::LABEL_PREPEND) всъщност задава текста на етикета преди квадратчето за отметка. - person automatix; 12.04.2013