为什么这个过滤器在这里?它应该在控制器中吗?

时间:2011-01-22 23:08:40

标签: php zend-framework

我看到了这段代码。我删除了一些不相关的代码以使其更简单(就像检查密码匹配的相同验证器一样)。

$password = new Zend_Form_Element_Password('password');
$password->addFilter(new My_Filters_Sha());

$password2 = new Zend_Form_Element_Password('password2');
$password2->addFilter(new My_Filters_Sha());

我的问题是关于过滤器。我的猜测是,无论谁编写它都是将密码保存在数据库中作为散列,这就是他们用过滤器散列密码的原因。但是过滤器处理散列有什么意义呢?在创建帐户时,不应该在控制器中执行一次这样的操作吗?收到输入后,将其处理为哈希并保存。是否有必要将此作为过滤器完成?

1 个答案:

答案 0 :(得分:2)

您的控制器的职责是处理请求并委托给相应的模型。散列密码是业务逻辑。业务逻辑在控制器中没有位置但属于模型。您的Form类是Model类,因此将过滤器放在那里是合适的。