我正在使用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如果有任何类别,它会显示弹出窗口无法删除此帖子。
关于此的任何解决方案?
答案 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; ?>
我会这样做......你可以做任何你想做的事情