繁体   English   中英

PHP YII Cgridview和复选框+不同的模型

[英]php YII Cgridview & Checkbox + Different Model

我在YII非常陌生,很抱歉这是一个愚蠢的问题。

在视图(_form)中,我显示2个不同的表: 计费成本,它们通过列IDCLIENTIDBILLING连接

当我创建一个新的帐单我想它可以选择(与复选框),它的成本插入,和cost.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,
                ));
        }

预先感谢您的任何答复

您可以像这样(在javascript中)刷新网格:

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

通过ajax将所需的数据提交到另一个控制器,并保存它或所需的任何内容,然后刷新网格并显示新结果!

干杯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM