ale*_*lex 8 php validation model-view-controller kohana
我正在使用Kohana,但我认为这个问题更为笼统.
我一直在控制器中进行表单验证,到目前为止它运行良好.但最近,我遇到了一个问题.
我有一个评论模型,我从几个不同的控制器发送评论.我没有在每个控制器中都有验证器,而是将它放在模型中.
这很棒,因为
这很糟糕,因为
成功
array('success' => true);
Run Code Online (Sandbox Code Playgroud)
失败
array('success' => false, $errors);
Run Code Online (Sandbox Code Playgroud)
我不禁想到这是错的.这感觉不对.
如果我在控制器中这样做,我可以做到
if ($post->validate()) {
doWhatever();
} else {
$this->template->formErrors = $post->errors('form_errors');
}
Run Code Online (Sandbox Code Playgroud)
这似乎更好(对我来说).
有一个更好的方法吗?我应该在控制器或方法中验证吗?我疯了吗?
我不认为所有验证规则都可以进入模型.验证是关于表单(或API)的.事实是,当您验证数据时,大多数事情都取决于上下文.
例如,这是一个登录用户采取行动?您不会将身份验证层与要验证的模型耦合.因此,所有检查必须进入控制器内部.该模型与上下文无关; 表单"属于"控制器并且是上下文感知的.
我认为具有每个表单验证规则以及 对格式良好的数据进行基本的模型内检查是可行的方法.如果你在模型的validate()函数中调用Auth :: instance()或Session :: instance(),那么你做错了.
| 归档时间: |
|
| 查看次数: |
1492 次 |
| 最近记录: |