5

不知道哪个最好?您认为最好user login form在控制器中验证或其他形式,还是最好在模型中定义一个类,例如“安全类”来验证?或定义一些类进行验证?你知道更好的选择或好的技术吗?

<?php
class acontroller{
.
.
.
private function loginformAction()
{
    $this->actionform='loginform';
    $this->errorMsg=array();
    if(isset($post)){
        if(empty($post('aliasName'))){
                       ...
        }else{
           ...
                    }
        if(empty($post('password'))){
                      ...
        }
        if(empty($post('re_password'))){
                      ...   
        }
        if(!empty($post('password')) && isset($post('re_password')) ){
                      ...
        }
    }

    $this->render();
}
  .
  .
  .
 }   
4

2 回答 2

8

验证是域逻辑的一部分。控制器应该与此无关。它只需要将传入的请求值传递给模型层的适当部分。

验证本身应该发生在模型层的领域对象中。此外,在某些表格中,您必须担心数据完整性(即注册表中的唯一用户名)。在这种情况下,数据完整性检查实际上应该由数据映射器处理,本质上是将数据传递给 SQL 数据库,SQL 数据库执行检查,如果存在违规,它会触发 DB 抽象异常。

更新

由于您的问题是处理身份验证/授权,因此您可能会发现这篇文章是相关的。

于 2012-11-30T18:46:07.830 回答
1

IMO“表单验证”又名“字段 X 是否填写?检查长度、检查内容等”可以在控制器中处理,但“用户身份验证/访问控制”最好作为其自己的模型对象处理。

在实践中,我有一个“表单”模型对象,它可以构建和验证表单,所以我不会在每个接受输入的控制器中重新实现代码。

于 2012-11-30T18:46:21.153 回答