Php 在MVC模型中的何处放置错误代码以向用户显示错误

Php 在MVC模型中的何处放置错误代码以向用户显示错误,php,model-view-controller,yii,Php,Model View Controller,Yii,我在Yii中有一个简单的设置,有一个模型、视图和一个控制器来管理DB表。(使用Gii创建) 当用户按下删除按钮时,我想用我自己的一些规则验证这个请求,如果有错误,则向用户显示 如果我将验证方法放入模型中,请从控制器删除方法调用此验证。但是,我不知道如何在网页上显示一个弹出窗口 我不能专门为Yii说话,但在PHP5.3中,一般来说,一个好的做法是从模型(请注意,人类可读的模型)中抛出错误,然后在控制器中调用模型时捕获错误。然后,控制器可以将错误列表传递给视图,视图负责向用户显示错误 <?ph

我在Yii中有一个简单的设置,有一个模型、视图和一个控制器来管理DB表。(使用Gii创建)

当用户按下删除按钮时,我想用我自己的一些规则验证这个请求,如果有错误,则向用户显示


如果我将验证方法放入模型中,请从控制器删除方法调用此验证。但是,我不知道如何在网页上显示一个弹出窗口

我不能专门为Yii说话,但在PHP5.3中,一般来说,一个好的做法是从模型(请注意,人类可读的模型)中抛出错误,然后在控制器中调用模型时捕获错误。然后,控制器可以将错误列表传递给视图,视图负责向用户显示错误

<?php
class Model {
    public function doImportantStuff() {
        //Do stuff
        if(true) {
            throw new Exception('Important stuff could not be completed due to this important error.');
        }
    }
}

class Controller {
    public function index() {
        $data = array();
        $crucial = new Model();

        try {
            $crucial->doImportantStuff();
        } catch(Exception $e) {
            $data['errors'][] = $e;
        }
    }
}

//And in the view
<?php if($data['errors']): ?>
<?php foreach($data['errors'] as $error): ?>
    <p><?= $error->getMessage(); ?></p>
<?php endforeach; ?>
<?php endif; ?>


您希望将验证规则放在模型中的rules方法中,Gii应该为您创建该方法。您可以使用预定义的验证规则或创建自己的验证规则,请参阅。您可能希望为此删除函数定义一个“场景”属性,然后可以将自定义规则限制为该删除操作

操作将在您的控制器中定义,-如果您使用Gii创建CRUD,您应该有示例代码可供参考

在您的视图中,您可以使用在页面上显示错误,或者调用检索错误以创建自定义错误状态(使用js或css等)


另一个选项是使用js定义onsubmit函数,该函数在提交之前执行ajax调用以验证delete函数。(ajax调用将对控制器函数进行调用,在删除之前,您仍然希望在模型中进行验证。)

谢谢-为我提供了额外的信息,以研究我需要的内容,并且它几乎按照我设想的方式工作。新的代码示例非常完美-正是我想要的。谢谢-这也很棒-慢慢理解MVC编码