yii2显示来自数据库错误的消息

时间:2018-06-12 05:42:21

标签: yii2

我有相关的表格并在gridview上显示。当我想从gridview中删除数据时,我使用其他表字段获取有关此数据的mysql错误。那时我想向用户显示消息,例如“此数据不删除”。

我在yii 1.1做了如下。

视图/ XXX / index.php的

<div id="statusMsg">
    <?php if(Yii::app()->user->hasFlash('success')):?>
        <div class="flash-success" >
           <?php echo Yii::app()->user->getFlash('success'); ?>
        </div>
    <?php endif; ?>

    <?php if(Yii::app()->user->hasFlash('error')):?>
        <div class="flash-error">
          <?php echo Yii::app()->user->getFlash('error'); ?>
        </div>
    <?php endif; ?>
</div> 

gridview

array(
'class'=>'CButtonColumn',
'afterDelete'=>
        'function(link,success,data){ 
             if(success) $("#statusMsg").html(data); 
         }',
),

控制器/ xxxcontroller

public function actionDelete($id)

{
  try{
     $this->loadModel($id)->delete();
     if(!isset($_GET['ajax']))
       Yii::app()->user->setFlash('success','Normal – Deleted Successfully');
     else
       echo "<div class='flash-success'>Yiyecek Başarıyla Silindi</div>";
  }catch(CDbException $e){

  if(!isset($_GET['ajax']))
    Yii::app()->user->setFlash('error','Normal – error message');
  else
    echo "<div class='flash-error'>Yiyecek silinimedi.</div>"; //for ajax

  }
}

但是在yii2中没有使用删除。我不知道该使用什么而不是afterDelete。

谢谢。

1 个答案:

答案 0 :(得分:0)

我在控制器删除操作中使用了以下代码

    $connection = Yii::$app->db;
    $transaction = $connection->beginTransaction();
    try {
        $this->findModel($id)->delete();
        $transaction->commit();
        Yii::$app->session->setFlash('success','Silme işlemi başarılı.');
        return $this->redirect(['index']);

    } catch (IntegrityException $e) {
        $transaction->rollBack();
        Yii::$app->session->setFlash('error','Silme işleminde hata oluştu.');
        return $this->redirect(['index']);

    }catch (\Exception $e) {

        $transaction->rollBack();
        Yii::$app->session->setFlash('error','Silme işleminde hata oluştu.');
        return $this->redirect(['index']);
    }