2013-09-14 4 views
0

Я очень новичок в YII и извините, если это глупый вопрос.php YII Cgridview & Checkbox + Different Model

в представлении (_form) Я displayng 2 разных таблиц: счетов & стоимости они связаны корыта colums IDCLIENT & IDBILLING

Когда я создаю новую биллинг я бы как выбрать (с флажками), которые стоят в нем, а стоимость .IDBILLING должна быть обновлена ​​только с созданным IDBILLING.

Я подчеркиваю не знающую часть.

Здесь _form Код:

<div class="form"> 

<?php $form=$this->beginWidget('CActiveForm', array(
     'id'=>'billing-form', 
     // Please note: When you enable ajax validation, make sure the corresponding 
     // controller action is handling ajax validation correctly. 
     // There is a call to performAjaxValidation() commented in generated controller code. 
     // See class documentation of CActiveForm for details on this. 
     'enableAjaxValidation'=>false, 
)); ?> 

     <p class="note">Fields with <span class="required">*</span> are required.</p> 

     <?php echo $form->errorSummary($model); ?> 

     <div class="row"> 
      <?php echo $form->labelEx($model,'IDCLIENT'); ?> 
    <h2><?php echo $client->IDCLIENT; ?></h2> 
       <?php echo $form->error($model,'IDCLIENT'); ?> <br> 
    <h3><?php 
     echo $client->name." ".$client->surname."<br>".$client->document; 
    ?></h3> 
    </div> 

     <div class="row"> 
       <?php echo $form->labelEx($model,'datefrom'); ?> 
           <?php 
     $this->widget('zii.widgets.jui.CJuiDatePicker',array(
     'name'=>"Billing[datefrom]", // the name of the field 
     'value'=>$model->datefrom, // pre-fill the value 
     // additional javascript options for the date picker plugin 
      'options'=>array(
       'showAnim'=>'fold', 
       'dateFormat'=>'yy-mm-dd', // optional Date formatting 
     ), 
     'htmlOptions'=>array(
      'style'=>'height:20px;' 
     ), 
    ));      
    ?> 
       <?php echo $form->error($model,'datefrom'); ?> 
     </div> 

     <div class="row"> 
       <?php echo $form->labelEx($model,'dateto'); ?> 
           <?php 
     $this->widget('zii.widgets.jui.CJuiDatePicker',array(
     'name'=>"Billing[dateto]", // the name of the field 
     'value'=>$model->dateto, // pre-fill the value 
     // additional javascript options for the date picker plugin 
      'options'=>array(
       'showAnim'=>'fold', 
       'dateFormat'=>'yy-mm-dd', // optional Date formatting 
     ), 
     'htmlOptions'=>array(
      'style'=>'height:20px;' 
     ), 
    ));      
    ?> 
       <?php echo $form->error($model,'dateto'); ?> 
     </div> 

     <div class="row"> 
       <?php echo $form->labelEx($model,'date'); ?> 
           <?php 
     $this->widget('zii.widgets.jui.CJuiDatePicker',array(
     'name'=>"Billing[date]", // the name of the field 
     'value'=>$model->date, // pre-fill the value 
     // additional javascript options for the date picker plugin 
      'options'=>array(
       'showAnim'=>'fold', 
       'dateFormat'=>'yy-mm-dd', // optional Date formatting 
     ), 
     'htmlOptions'=>array(
      'style'=>'height:20px;' 
     ), 
    ));      
    ?> 
       <?php echo $form->error($model,'date'); ?> 
     </div> 

     <div class="row"> 
       <?php echo $form->labelEx($model,'state'); ?> 
       <?php echo $form->textField($model,'state',array('size'=>16,'maxlength'=>16)); ?> 
       <?php echo $form->error($model,'state'); ?> 
     </div> 

<?php $this->widget('zii.widgets.grid.CGridView', array(
     'id'=>'cost-grid', 
     'dataProvider'=>new CActiveDataProvider('Cost',array(
    'criteria' => $criteria, 
    'pagination' => array('pageSize' => 10), 
)), 
    'selectableRows' => 2, 
     //'filter'=>$model, 
     'columns'=>array(
    array('class'=>'CCheckBoxColumn','value'=>'$data->IDCOST/*??????IS THIS CORRET????*/',), 
       'IDCOST', 
       'advance', 
       'spent', 
       'date', 
       'type', 
       'scope', 
       /* 
       'note', 
       'IDCLIENT', 
       */ 

     ), 
)); ?> 

здесь контроллер:

public function actionCreate($IDCLIENT) 
     { 
       $model=new Billing; 
    $client = new Client; 
    $criteria=new CDbCriteria; 
       // Uncomment the following line if AJAX validation is needed 
       // $this->performAjaxValidation($model); 
    //$this->IDCLIENT= $IDCLIENT; 

    $client = Client::model()->findByPk((int)$IDCLIENT); 


    $criteria->condition = "IDCLIENT = ".$client->IDCLIENT." AND (IDBILLING IS NULL OR IDBILLING = 0)"; 
    $criteria->order = "date DESC"; 


       if(isset($_POST['Billing'])) 
       { 
         $model->attributes=$_POST['Billing']; 
     $model->IDCLIENT=$client->IDCLIENT; 
         if($model->save()){ 

     $cost= new Cost; 
     if($cost=Cost::model()->updateAll(array('IDBILLING' => $model->IDBILLING), 'IDCOST = '.#########WHAT I HAVE TO INSERT HERE???########)) 
            $this->redirect(array('view','id'=>$model->IDBILLING)); 
     } 
       } 

       $this->render('create',array(
         'model'=>$model, 
     'client'=>$client, 
     'criteria'=>$criteria, 
       )); 
     } 

Заранее спасибо за любой ответ

ответ

0

вы можете обновить свои сетки, как это (в JavaScript):

$.fn.yiiGridView.update("your-grid-name"); 

отправьте данные, которые вы хотите, с помощью ajax другому контроллеру, и сохраните его или что хотите, а затем обновите свою сетку и покажите свой новый результат!

ура

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