EJuiDateTimePicker/CJuiDateTimePicker ไม่ทำงานภายใน CJuiDialog

ดูเหมือนจะถูกถามมาก่อน แต่การใช้คำตอบดังกล่าวไม่ได้ให้วิธีแก้ปัญหาแก่ฉัน ฉันมีแบบฟอร์มสร้างซึ่งบันทึกการชำระเงินของลูกค้า มันใช้งานได้ดีจนกระทั่งฉันพยายามถ่ายโอนภายใน CJuiDialog ในมุมมองอื่น ใน create.php ของฉัน:

<?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)); ?>

และนี่คือวิธีที่ฉันใส่ datetimepicker ใน _form.php ของฉัน:

<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>

และในการดำเนินการของฉันสร้างตัวควบคุม:

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);
}

และนี่คือวิธีที่ฉันใช้ CJuiDialog ใน view.php ของฉัน:

        <?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 ทำงานได้ดีเมื่อมีการเรียกใช้ create.php ในทั้งหน้า แต่เมื่อฉันเรนเดอร์มันภายใน CJuiDialog มันไม่ทำงาน ฉันควรทำอย่างไรดี?


person mickey dinofrog    schedule 09.11.2015    source แหล่งที่มา


คำตอบ (1)


เฮ้เผื่อว่าจะมีคนเจอปัญหาเดียวกัน ฉันมีวิธีแก้ปัญหาที่นี่ ในตัวควบคุมของคุณ:

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);}

เพียงตั้งค่าทั้งสองเป็นเท็จแล้วคุณก็พร้อมที่จะไป

person mickey dinofrog    schedule 11.11.2015