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