Zend From Decorators не работают с ZendX_JQuery_Form - PullRequest
0 голосов
/ 21 апреля 2009

Я использую два декоратора - получить выравнивание табличной формы - Получить средство выбора даты (ZendX_JQuery_Form_Element_DatePicker)

оба работают индивидуально, но не одновременно

Ошибка:

Warning: Exception caught by form: Cannot render jQuery form element without at least one decorator implementing the 'ZendX_JQuery_Form_Decorator_UiWidgetElementMarker' interface. Default decorator for this marker interface is the 'ZendX_JQuery_Form_Decorator_UiWidgetElement'. Hint: The ViewHelper decorator does not render jQuery elements correctly. 

Функция My Get Form:

$form = new Form_Job();
$form->setDecorators(Decorator::$formDecorators);
$form->setElementDecorators(Decorator::$elementDecorators);
$form->getElement('submit')->setDecorators(Decorator::$buttonDecorators);

Класс формы Form_Job ()

class Form_Job extends ZendX_JQuery_Form {
   public function init() {
        $element = new ZendX_JQuery_Form_Element_DatePicker('date_from');
        $element->setLabel('Campaign Period From :');
        $element->setRequired(true);
        $element->setAttrib('size', '10');
        $element->setJQueryParam('dateFormat', 'yy-mm-dd');

        $this->addElement($element);
   }
}

Я получил эту помощь от http://framework.zend.com/manual/en/zend.form.decorators.html

jQuery Декораторы: остерегайтесь маркера Интерфейс для UiWidgetElements

По умолчанию все формы jQuery элементы используют ZendX_JQuery_Form_Decorator_UiWidgetElement декоратор для рендеринга jQuery элемент со своим конкретным помощником вида. Этот декоратор наследственно отличается от декоратора ViewHelper, который используется для большей части формы по умолчанию элементы в Zend_Form. Чтобы убедиться, что рендеринг работает правильно для jQuery элементы формы хотя бы одного декоратора должен реализовать ZendX_JQuery_Form_Decorator_UiWidgetElementMarker интерфейс, который по умолчанию декоратор делает. Если интерфейс маркера не найден исключение брошено. Используйте маркер интерфейс, если вы хотите реализовать ваш собственный декоратор для формы jQuery специфичный для элемента рендеринг.

Но мне нужен код для реализации этого, пожалуйста, предложите

1 Ответ

1 голос
/ 23 апреля 2009

Получил мой ответ: -

Я использовал

public static $formJQueryElements = array(
        array('UiWidgetElement', array('tag' => '')), // it necessary to include for jquery elements
        array('Errors'),
        array('Description', array('tag' => 'span')),
        array('HtmlTag', array('tag' => 'td')),
        array('Label', array('tag' => 'td', 'class' =>'element')),
        array(array('row' => 'HtmlTag'), array('tag' => 'tr')),
);
$form->getElement('jq_date')->setDecorators(Decorator::$formJQueryElements);

это хорошо работает для выравнивания таблиц, для элементов jquery !!!!!

...