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


Add error when delete data in Yii 1

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

我在控制器中的代码:

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,将 $_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; ?>

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