我一直在研究如何更改Zend Framework 2中ZFCUser模块中注册字段的实际验证过程。
有很多关于在表单中扩展和添加新字段等,但没有验证这些字段或扩展现有验证。
我查看了代码并找到了RegistrationForm.php文件并添加了我的客户正则表达式过滤器。
这很好,并且符合预期,但我担心这会在未来的任何升级中被覆盖。
我将如何进行此操作以确保升级安全?这是扩展特定类或将其作为本地文件添加到我的自定义模块中的情况,就像我对视图文件所做的那样。
答案 0 :(得分:1)
我和你一样的问题,也找不到合适的解决方案。但恕我直言,改变原始源代码的方法是覆盖其中一个ZfcUser服务。
有一项名为' zfcuser_change_password_form'在zfc-user Module.php中定义。如果您使用相同名称创建自己的服务 - 将覆盖原始服务。所以,首先你需要定义自己的过滤器/验证器类(YourFilter),然后在你的Module.php中添加:
public function getServiceConfig()
{
return array(
// ...
'factories' => array(
// ...
'zfcuser_change_password_form' => function ($sm) {
$options = $sm->get('zfcuser_module_options');
$form = new \ZfcUser\Form\ChangePassword(
null, $sm->get('zfcuser_module_options')
);
$form->setInputFilter(
new \YourModule\Form\YourFilter($options)
);
return $form;
},
),
);
}
此类解决方案允许更新zfcuser而不会覆盖您的更改。