MVC:Model应该返回错误消息或错误代码

时间:2014-12-22 10:06:52

标签: php

我目前正在使用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,一个控制器可以以不同于另一个控制器的方式插入它,因此该模型将是非常通用的

3 个答案:

答案 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'];