EJuiDateTimePicker/CJuiDateTimePicker tidak berfungsi di dalam CJuiDialog

Hal ini sepertinya ditanyakan sebelumnya tetapi menerapkan jawaban seperti itu tidak memberi saya solusi. Saya memiliki formulir pembuatan yang mencatat pembayaran klien. Ini berfungsi dengan baik sampai saya mencoba mentransfernya ke dalam CJuiDialog di tampilan lain. Di buat.php saya:

<?php
    /* @var $this PaymentsController */
    /* @var $model Payments */

    $this->breadcrumbs=array(
        'Payments'=>array('index'),
        'Create',
    );

    $this->menu=array(
        array('label'=>'List Payments', 'url'=>array('index')),
        array('label'=>'Manage Payments', 'url'=>array('admin')),
    );

 ?>

<h4 class="text-success">Payments <span class="glyphicon glyphicon-tag"></span></h4>
<hr>
<?php $this->renderPartial('_form', array('model'=>$model)); ?>

Dan inilah cara saya meletakkan datetimepicker di _form.php saya:

<div class="row">
    <?php echo $form->labelEx($model,'payment_date'); ?>
    <?php 

        $this->widget('EJuiDateTimePicker',array(
            'model'=>$model, //Model object
            'attribute'=>'payment_date', //attribute name
            //'dateFormat'=>'dd-mm-yy',
            'value'=>date('MM-dd-yy H:i:s'),
            'mode'=>'datetime', //use "time","date" or "datetime" (default)
            'language'=>'en-GB',
            'options'=>array(

            'dateFormat'=>'yy-mm-dd',
             ) // jquery plugin options
            ));
    ?>      
    <?php echo $form->error($model,'payment_date'); ?>
</div>

dan di pengontrol actionCreate saya:

public function actionCreate($id, $bal)
{
    $model=new Payments;
    $model->contract_id = $id;
    // Uncomment the following line if AJAX validation is needed
     $this->performAjaxValidation($model);

    if(isset($_POST['Payments']))
    {

        $_POST['Payments']['remaining_balance'] = $bal - $_POST['Payments']['down_payment'];
        $_POST['Payments']['paid_thru'] = $_POST['Payments']['account_id'];
        $balance = $_POST['Payments']['remaining_balance'];
        $model->attributes=$_POST['Payments'];
        if($model->save())
            {
                $model->updateBalance($id, $balance);
                $this->redirect(array('servicecontract/view','id'=>$id));
            }
    }

    $this->renderPartial('create',array(
        'model'=>$model, 'contr'=>$id,
    ),false, true);
}

dan inilah cara saya mengimplementasikan CJuiDialog di view.php saya:

        <?php
        echo CHtml::ajaxLink(
        "Make Payments", //link label
        Yii::app()->createUrl( 'tcfunecareModule/payments/create'),
        array( // ajaxOptions
            'type' => 'GET',
            'success' => "function( data )
                {
                    //alert( data );
                    $('#mydialog').dialog('open');
                    $('#dlg-content').html(data);
                }",
            'data' => array( 'id' => $model->contract_id, 'bal'=>$model->contract_balance)
        ),
        array('class'=>'btn btn-info pull-right')
        );
    ?>
        <?php $this->beginWidget('zii.widgets.jui.CJuiDialog', array(
        'id' => "mydialog",
        'options' => array(
        'autoOpen' => false,
        'width' => 'auto',
        'height' => 'auto',
        //'show'=>'fade-in',
        'hide'=>'fade',
        'modal' => true,
        'open'=> 'js:function(event, ui) { $(".ui-dialog-titlebar").hide(); }',
        'buttons' => array(
                Yii::t('app', 'Close') => 'js:function() {$(this).dialog("close");}',
        ),
        )));
     ?>
        <div id="dlg-content" style="dispay:none;"></div>
     <?php 
        $this->endWidget('zii.widgets.jui.CJuiDialog');
     ?>

EJuiDateTimePicker berfungsi dengan baik ketika create.php dijalankan di seluruh halaman. Namun ketika saya merendernya di dalam CJuiDialog, itu tidak berfungsi. Apa yang harus saya lakukan?


person mickey dinofrog    schedule 09.11.2015    source sumber


Jawaban (1)


Hai, kalau-kalau ada yang mengalami masalah yang sama. Saya punya solusinya di sini. Di pengontrol Anda:

if (Yii::app()->request->isAjaxRequest) {
        Yii::app()->clientScript->scriptMap['jquery.js'] = false;
        yii::app()->clientScript->scriptMap['jquery-ui.min.js'] = false;
        $this->renderPartial('create',array(
        'model'=>$model,'contr_id'=>$id,
    ),false,true);}

Cukup masukkan keduanya ke dalam false dan Anda siap melakukannya.

person mickey dinofrog    schedule 11.11.2015