我应该在我的模型或控制器中写flash消息吗?
如果我在控制器中执行此操作,模型将需要将状态消息传递给它,因此如果在模型中执行此操作似乎更自然。
答案 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.
}
}