Загрузка виджета Zii CjuiDatePicker через AJAX не работает - PullRequest
2 голосов
/ 18 марта 2012

Краткое описание проблемы:
(i) Виджет в статической части формы работает нормально; но
(ii) В динамически генерируемой части отображается только текстовое поле (при щелчке по нему не создается календарь для выбора даты)

Ниже кода показана «динамическая» попытка:

(1) Пользователь может нажать «(+) дата»:

    <?php echo CHtml::link('(+) Date','javascript:void(0);',array('class'=>'date-add'))?>

(2) Обработчик jquery выполняет запрос AJAX:

    <script>
        $(".date-add").click(function() { $.ajax({
            success: function(html) {$(".date-list").append(html);}, type: 'get',
            url: '<?php echo $this->createUrl('CreateDate')?>',
            data: {index: counter++}, cache: false, dataType: 'html'
        });});
    </script>

(3) Обработчик jquery запускает actionCreateDate:

    model = new Date;
    $this->renderPartial('_newDate', array(
        'model' => $model,
    ));

(4) И код просмотра

    <?php 
        $this->widget('zii.widgets.jui.CJuiDatePicker', array( 
            'name'=>'Date', 'options'=>array(),'htmlOptions'=>array(),
        ));
    ?>

Как я могу решить эту проблему (то есть иметь рабочие виджеты в динамически генерируемой части формы)? Заранее спасибо!

1 Ответ

8 голосов
/ 21 марта 2012

Ваша проблема в основном в (3), когда вы делаете частичный рендеринг, содержимое рендеринга не обрабатывается. Следовательно, вы можете решить это -

model = new Date;
$this->renderPartial('_newDate', array(
    'model' => $model,
));

как -

model = new Date;
$this->renderPartial('_newDate', array(
    'model' => $model,
), false, true);

Четвертый параметр функции CController :: renderPartial обрабатывает js содержимого рендеринга и загружает их.

...