我有相关的表格并在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。
谢谢。
答案 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']);
}