我正在使用 Yii 的默认删除。而且我只想软删除一行,这意味着我保留该行并将列deleted
从0
更新为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; ?>
我会这样做...你可以做任何你想做的事情