如何解决验证 prestashop 用户注册字段
首先非常感谢您阅读我,我刚刚开始学习如何创建 prestashop 模块,我想使用 prestashop 1.7 检查注册(必须超过 18 岁)用户的生日字段。
我试过用钩子来做,但我做不到,也找不到任何解决方案。
重要的是我需要从一个模块中做这件事。 当我安装并启用模块时,它应该进行检查。
非常感谢:)
解决方法
您可以通过覆盖 Prestashop 的 Validate 类来实现这一点。如果您想通过模块执行此操作,请按照以下步骤操作:
- 创建模块(TUTORIAL)
- 在
/modules/<module_name>/override/classes/Validate.php
处创建文件“Validate.php” - 在“Validate.php”文件中放置以下代码:
<?php
class Validate extends ValidateCore
{
public static function isBirthDate($date,$format = 'Y-m-d')
{
if (empty($date) || $date == '0000-00-00') {
return true;
}
$d = DateTime::createFromFormat($format,$date);
if (!empty(DateTime::getLastErrors()['warning_count']) || false === $d) {
return false;
}
$d->add(new DateInterval("P18Y"));
return $d->setTime(0,0)->getTimestamp() <= time();
}
}
它会在模块安装过程中复制到 /override/classes/Validate.php
中,并在卸载时自动删除。
$d->add(new DateInterval("P18Y"));
如果提供的日期低于 18 岁,上面的行将不允许用户创建帐户。
安装模块后不要忘记从缓存文件夹中删除 class_index.php
以便应用覆盖。 (您可以在 /var/cache/dev
或 /var/cache/prod
找到)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。