2015-11-09 2 views
1

Это, казалось, было задано раньше, но применение таких ответов не дало мне решения. У меня есть форма создания, которая регистрирует платежи клиентов. Он отлично работает, пока я не попытался перенести его внутри CJuiDialog в другое представление. В моей create.php:EJuiDateTimePicker/CJuiDateTimePicker не работает внутри CJuiDialog

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

и в моем actionCreate контроллер:

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, он не работает. Что мне делать?

ответ

0

Эй, если кто-то столкнется с той же проблемой. У меня есть решение. В вашем контроллере:

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

Просто установите эти два в ложные, и вам хорошо идти.

Смежные вопросы