drsl90685154 2013-09-29 14:29
浏览 49

如何根据提交按钮更新字段 - Yii

I'm new to Yii framework. I have to create three buttons in my form (update.php). i.e. (Save, Approve, Reject). I'm using the following fields in my form.

<?php
/* @var $this MessageTemplateController */
/* @var $model MessageTemplate */
/* @var $form CActiveForm */
?>

<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'message-template-form',
    'enableAjaxValidation'=>false,
)); ?>



    <?php

        echo $form->errorSummary($model); 
        ?>
    <div class="row">
        <?php //$model->ReviewedDate=date('Y-m-d H:i:s');?>
        <?php echo $form->labelEx($model,'ReviewedDate'); ?>
        <?php echo $form->textField($model,'ReviewedDate',array('value'=>'0000-00-00 00:00:00','readonly' => true)); ?>
        <?php echo $form->error($model,'ReviewedDate'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($model,'SmsText'); ?>
        <?php echo $form->textArea($model,'SmsText',array('size'=>60,'maxlength'=>255)); ?>
        <?php echo $form->error($model,'SmsText'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($model,'UpdatedDate'); ?>
        <?php echo $form->textField($model,'UpdatedDate'); ?>
        <?php echo $form->error($model,'UpdatedDate',array('value'=>date('Y-m-d H:i:s'),'readonly' => true)); ?>
    </div>
    <div class="row">
    <?php echo $form->labelEx($model,'Approved'); ?>
            <?php echo $form->hiddenField($model, 'Approved'); ?>
    <?php echo $form->error($model,'Approved'); ?>
</div> 
<div class="row">
<div class="row">
            <?php echo $form->labelEx($model_al, 'username'); ?>
            <?php $identity=Yii::app()->user->name;?>
        <?php echo $form->textField($model_al, 'username',array('value'=>$identity,'readonly' => true), array('size' => 60, 'maxlength' => 250)); ?>
        <?php echo $form->error($model_al, 'username'); ?>
        <div>


         <div class="row">        
        <?php echo $form->labelEx($model_al, 'updatedtime'); ?>            
        <?php echo $form->textField($model_al, 'updatedtime',array('value'=>date('Y-m-d H:i:s'),'readonly' => true), array('size' => 60, 'maxlength' => 250)); ?>
        <?php echo $form->error($model_al, 'updatedtime'); ?>
        <div>

         <div class="row">        
        <?php echo $form->labelEx($model_al, 'comments on approval/rejection'); ?>            
        <?php echo $form->textField($model_al, 'comments',array('size' => 60, 'maxlength' => 250)); ?>
        <?php echo $form->error($model_al, 'comments'); ?>
        <div>

    <div class="row buttons">


            <?php echo CHtml::submitButton('Save', array('name' => 'save')); ?>
                <? echo '&nbsp;&nbsp;&nbsp;'; ?>
<?php echo CHtml::submitButton('Accept', array('name' => 'accept')); ?>
                <? echo '&nbsp;&nbsp;&nbsp;'; ?>
<?php echo CHtml::submitButton('Reject', array('name' => 'reject')); ?>

    </div>

<?php $this->endWidget(); ?>

</div><!-- form -->

Now I have created three buttons.There is a field called approved in the above form. I want this actions to happen when i click on the following buttons :
1. Save - All fields have to be saved but not approved(keep it as default).
2. Accept - All fields have to be saved with Approved changing to 1 in database.
3. Reject - All fields have to be saved with Approved changing to 0 in database.

How can I do this.

EDit I have added the following in my controller.

public function actionUpdate($id)
    {       
                $model_mt=new Messagesintable;   
                $model_al=new AuditLogin;                
        $model=$this->loadModel($id);

        // Uncomment the following line if AJAX validation is needed
        // $this->performAjaxValidation($model);

                 if(isset($_POST['MessageTemplate']) && isset($_POST['AuditLogin']))
                  {                     


                    $model->attributes=$_POST['MessageTemplate'];                                      

                    list($name,$mobile,$email)=retrieve_persondetails($id); 

                      if($model->save())
                      {
                        $model_al->attributes=$_POST['AuditLogin'];                     

                                             if ($model_al->save())
                         $this->redirect(array('admin','id'=>$model->Id));
                      }
                  }
$this->render('update',array(
'model'=>$model,

)); 
}
  • 写回答

1条回答 默认 最新

  • douxing8939 2013-09-29 14:37
    关注

    You can check whether which submit button is clicked with these conditions and write your action inside.

    if($_POST)   {
    
        if (isset($_POST['Save'])) { 
            // your code here
        }
    
        if (isset($_POST['Accept'])) { 
           // your code here
        }
    
        if (isset($_POST['Reject'])) { 
           // your code here
        }
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 制裁名单20240508芯片厂商
  • ¥20 易康econgnition精度验证
  • ¥15 线程问题判断多次进入
  • ¥15 msix packaging tool打包问题
  • ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接