我目前正在使用PHP和我自己的MVC框架实现一个网站。
当用户执行添加/编辑等操作时,我首先验证输入。 如果出现问题,模型会向控制器返回一个Result对象,其中包含出错的列表错误消息。
如果发生错误,控制器会将Result对象消息转发给View for rendering
我的问题:模型发送描述错误的短信列表是否明智,或者最好返回错误代码列表( int),在将它传递给视图之前,它将是解析它们并将它们转换为文本消息的控制器的响应能力? 任何帮助将不胜感激
编辑 - 添加一些代码----
class Result{
...
function addError($msg);
function getErrors(); // return an array of messages
function isSuccess(); // return bool.
...
}
class MyModel extends Model{
...
function save(){
$result = new Result();
// error occur
$result.addError('bla bla1');
// another error occur
$result.addError('bla bla2');
if(!$result->isSucces()){
return $result;
}
}
....
}
class MyController extends Controller{
...
function actionSave(){
$result = $this->model->save($data2save);
if(!$result->isSuccess()){
// pass $result to View
}
}
....
}
我添加了一些代码,因此更容易理解。 我只是认为将text_message添加到Model会使它更多地耦合到控制器而不是通用。 通过使用error_code,一个控制器可以以不同于另一个控制器的方式插入它,因此该模型将是非常通用的
答案 0 :(得分:1)
我使用错误代码,以便您可以在应用程序的一个中心点处理所有即将出现的错误代码。
此外,我认为错误代码对于错误处理和错误记录更有用,因为您可以将相似的错误代码设置在一起,并在相同的代码位置对它们执行不同的操作。
但我猜这是主要的意见
答案 1 :(得分:0)
您应该在错误上抛出异常。然后,您可以捕获控制器中的异常。可以使用消息设置异常。
点击此处了解有关例外情况的详情:http://be2.php.net/manual/en/language.exceptions.php
答案 2 :(得分:0)
我认为你在谈论验证错误。有不同的方法。
模型应验证数据并返回错误消息,并从控制器返回,具体取决于您的框架,您可以将它们设置为视图。非常基本的例子:
$this->Model->save($data); // Should trigger Model::validate() internally.
$this->set('errors', $this->Model->validationErrors());
再次,根据您的框架,另一个,恕我直言更好的解决方案是,如果您的模型返回多个记录的数据对象和集合。该对象将包含有关其代表的字段的信息,包括它的验证错误。
我显然不会只返回一个整数,但无论你选择何种方式,你都应该能够将错误信息映射到一个字段,以便你可以在视图中相应地显示它们。再次,只是一个明确的想法的基本例子:
echo $entity->errors['field_name']['validation_rule_1'];
echo $entity->errors['field_name']['validation_rule_2'];
echo $entity->errors['field_name2']['validation_rule_1'];