我正在使用 Kohana,但我认为这个问题更笼统。
我一直在控制器中进行表单验证,到目前为止效果很好。但是最近,我遇到了一个问题。
我有一个评论模型,我从几个不同的控制器向它发送评论。我没有在每个控制器中都有一个验证器,而是将它放在模型中。
这很棒,因为
- 只有一处更改/添加验证规则 (DRY)
这很糟糕,因为
- 我显然需要向控制器返回成功或失败,而 Kohana 的验证库将错误作为数组返回。所以我的回报看起来像这样
成功
array('success' => true);
失败
array('success' => false, $errors);
我不禁认为这是错误的。感觉不对。
如果我在控制器中做,我可以简单地做
if ($post->validate()) {
doWhatever();
} else {
$this->template->formErrors = $post->errors('form_errors');
}
这似乎更好(对我来说)。
有一个更好的方法吗?我应该在控制器或方法中进行验证吗?我要疯了吗?