Zend и jQuery DatePicker дают неожиданный результат - PullRequest
0 голосов
/ 07 февраля 2011

У меня есть форма Zend, для которой я включил компоненты jQuery через:

ZendX_JQuery::enableForm($this);

, а затем добавил несколько не-jQuery элементов и один jQuery DatePicker, определенный как:

$testing = new ZendX_JQuery_Form_Element_DatePicker('dp1', array('jQueryParams' => array('dateFormat' => 'yy-mm-dd')));
$testing->setLabel('Date of Birth 2')
    ->setRequired(true)
    ->addValidator('NotEmpty');

Затем я настроил декораторы следующим образом (сначала для всех элементов, а затем заменил определение декоратора для DatePicker):

$this->clearDecorators();
$this->addDecorator('FormElements')
    ->addDecorator('HtmlTag', array('tag' => 'div', 'class'=>'form-block'))
    ->addDecorator('Form');

$this->setElementDecorators(array(
    array('ViewHelper'),
    array('Errors'),
    array('Description', array('tag' => 'div', 'class' => 'tooltip')),
    array('Label', array('separator'=>' ')),
    array('HtmlTag', array('tag' => 'div', 'class'=>'element-block')),
));

$formJQueryElements = array(
    array('UiWidgetElement', array('tag' => '')),
    array('Errors'),
    array('Description', array('tag' => 'div', 'class' => 'tooltip')),
    array('Label', array('separator' => ' ')),
    array('HtmlTag', array('tag' => 'div', 'class' => 'element-block')),
);
$this->getElement('dp1')->clearDecorators();
$this->getElement('dp1')->setDecorators($formJQueryElements);

Кажется, что все мои поля отображаются правильно, за исключением DatePicker, который каким-то образом был преобразован в текстовое поле. HTML-код для поля выглядит так:

<div class="element-block">
    <label for="dp1" class="required">Date of Birth 2</label> 
    <input type="text" name="dp1" id="dp1" value="">
</div>

, который не является DatePicker. Что я упустил при настройке или какую ошибку я допустил здесь?

Большое спасибо.

1 Ответ

0 голосов
/ 07 февраля 2011

Нашел ответ, хотя бы частично. Я забыл включить следующий код в мое представление, что означало, что поле не было преобразовано в поле даты:

<script>
    $(function() {
        $("#dp1").datepicker();
    });
</script>

, который изменяет текстовое поле на DatePicker. Но при этом не сохраняются какие-либо параметры jQuery, установленные в классе Form, что означает, что я должен либо установить их здесь, что будет работать только в том случае, если все средства выбора даты на сайте используют одинаковые правила отображения (чего они не делают), и Я должен перейти от использования идентификатора к использованию класса элемента, что не имеет большого значения.

...