我应该从我的模型中写下flash消息吗?

时间:2011-09-19 07:07:47

标签: php zend-framework

我应该在我的模型或控制器中写flash消息吗?

如果我在控制器中执行此操作,模型将需要将状态消息传递给它,因此如果在模型中执行此操作似乎更自然。

1 个答案:

答案 0 :(得分:1)

不,那不是个好主意。最好使用异常或其他形式的返回值。

这是模型的更好用法。让我们编写一个非常简单的模型,根据密钥从数组中检索一个值(如果存在):

class MyModel {
    static private $data = array(
        'cat'    => 'hat',
        'cow'    => 'milk',
        'hotdog' => 'icecream',
    );

    static public function getSomeData($string) {
        if (!is_string($string) {
            throw new Exception("Invalid parameter type: " . gettype($string));
        }
        if (!isset(self::$data[$string])) {
            return array(
                'error' => "Could not find '{$string}'!";,
            );
        } else {
            return array(
                'result' => self::$data[$string],
            );
        }
    }
}

现在,您可以在控制器中使用它:

class DataController extends Zend_Controller_Action {

    public function getAction() {
        $search = $this->_getParam('s', '');
        $errors = array();
        $result = array();
        try {
            $model = MyModel::getSomeData($string);
        } catch (Exception $e) {
            $errors[] = $e->getMessage();
        }
        if (isset($model['error'])) {
            $errors[] = $model['error'];
        } else if (isset($model['result']) {
            $result[] = $model['result'];
        } else {
            $errors[] = "An unexpected error has occurred.";
        }

        // Now, you either have a result or errors from your model to work with.

    }

}