在Yii 1中删除数据时添加错误

时间:2016-03-08 03:39:57

标签: php yii crud

我正在使用Yii的默认删除。我只想要一行软删除,这意味着我保留该行并将deleted列从0更新为1

我在Controller中的代码:

public function actionDelete($id)
{
    $model = $this->loadModel($id);
    if (Posts::model()->countByAttributes(['category_id' => $model->id]) == 0) {
        $model->deleted = 1;
        $model->update();
    }
    if (!isset($_GET['ajax'])) {
        $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
    }
}

现在我只想要Post如果有任何类别,它会显示弹出窗口无法删除此帖子。

关于此的任何解决方案?

1 个答案:

答案 0 :(得分:1)

呃......通常你会在验证器中添加错误。老实说,这是最好的建议......以及Yii方式。您可以检查是否设置了$ _POST,将$ _POST质量分配给$ model->属性,然后让模型担心验证。我接下来要做的是在模型中编写一个自定义但简单的验证函数,该函数将检查是否存在所述模型的类别,如果是,则返回true,否则为false。那你就做:

if($model->validate())
{
    $model->delete = 1;
    if($model->update)
    {
       // do whatever you wanna do redirect/render...
    }
    else {
       Yii::app()->user->setFlash('error', "Unable to delete post");
       // render or redirect... flash is more for redirect but it'll do the trick
    }
}

这将解决它的后端。在视图文件中,您需要显示此闪光灯。在视图中,如果未删除则呈现,请添加以下代码:

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

我会这样做......你可以做任何你想做的事情