我使用Kohana,但我认为这个问题更一般。MVC项目应该在哪里进行验证?
我一直在做的控制器表单验证,它至今运作良好。但最近,我遇到了一个问题。
我有意见模式,我送从几个不同的控制器,以它的意见。我没有在每个控制器中都有验证器,而是将其放入模型中。
这是伟大的,因为
- 只有一个地方改变/添加验证规则(DRY)
太差劲了,因为
- 我显然需要返回成功或失败到控制器,Kohana的验证库以数组形式返回错误。所以,我的回报看起来像这样
成功
array('success' => true);
ON FAIL
array('success' => false, $errors);
我不禁觉得这是不对的。它感觉错了。
如果我在控制器做到这一点,我可以简单地做
if ($post->validate()) {
doWhatever();
} else {
$this->template->formErrors = $post->errors('form_errors');
}
这似乎更好(对我来说)。
有没有更好的方式来做到这一点?我应该在控制器或方法中验证吗?我疯了吗?
这就是我如何做,然后检查成功索引以决定做什么(不是与科纳纳,但通常)。 – 2009-10-08 03:52:49