php - Prestashop 注册错误

标签 php prestashop prestashop-1.6

最近我为我的客户做了 SEO 优化,我不得不改变服务器上的一些东西,比如使用 PHP 7 和 Presta Shop 管理面板来启用缓存和 SEO 链接。 我不使用 Presta Shop,也不熟悉它,但其中一些更改破坏了代码中的某些内容。 当新用户尝试注册时会收到该错误:

Fatal error: Uncaught Error: Access to undeclared static property: Validate::$data in /home/unikalna/public_html/classes/ObjectModel.php:1032 Stack trace: #0 /home/unikalna/public_html/controllers/front/AuthController.php(406): ObjectModelCore->validateController() #1 /home/unikalna/public_html/controllers/front/AuthController.php(252): AuthControllerCore->processSubmitAccount() #2 /home/unikalna/public_html/classes/controller/Controller.php(171): AuthControllerCore->postProcess() #3 /home/unikalna/public_html/classes/Dispatcher.php(373): ControllerCore->run() #4 /home/unikalna/public_html/index.php(28): DispatcherCore->dispatch() #5 {main} thrown in /home/unikalna/public_html/classes/ObjectModel.php on line 1032

如果它已经注册并尝试购买东西。

版本:PrestaShop™ 1.6.0.6

已解决:Presta Shop 1.6 不适用于 PHP 7

最佳答案

/home/unikalna/public_html/classes/ObjectModel.php:1032

旧代码

if (!empty($value) || $value === '0' || ($field == 'postcode' && $value == '0')) {
    if (isset($data['validate']) && !Validate::$data['validate']($value) && (!empty($value) || $data['required'])) {
                $errors[$field] = '<b>'.self::displayFieldName($field, get_class($this), $htmlentities).'</b> '.Tools::displayError('is invalid.');
            } else {
                if (isset($data['copy_post']) && !$data['copy_post']) {
                    continue;
                }
                if ($field == 'passwd') {
                    if ($value = Tools::getValue($field)) {
                        $this->{$field} = Tools::encrypt($value);
                    }
                } else {
                    $this->{$field} = $value;
                }
            }
        }

替换为下面的代码块

新代码

if (!empty($value) || $value === '0' || ($field == 'postcode' && $value == '0')) {
   if (isset($data['validate']) && !call_user_func('Validate::'.$data['validate'],$value) && (!empty($value) || $data['required'])) {
    $errors[$field] = '<b>'.self::displayFieldName($field, get_class($this), $htmlentities).'</b> '.Tools::displayError('is invalid.');
            } else {
                if (isset($data['copy_post']) && !$data['copy_post']) {
                    continue;
                }
                if ($field == 'passwd') {
                    if ($value = Tools::getValue($field)) {
                        $this->{$field} = Tools::encrypt($value);
                    }
                } else {
                    $this->{$field} = $value;
                }
            }
        }

关于php - Prestashop 注册错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35406163/

相关文章:

php - 如何在基于 MySQL 的 session 中使用 PHP 中的多维数组?

xml - 使用 WebService 将产品添加到 PrestaShop 1.6.0.9

javascript - 将 HTML 添加到自定义运输承运商/方法

php - Context::getContext() 如何在 Prestashop Bankwire 模块中使用

php - Prestashop - 在管理员中找不到 Controller

php - 检查 MySQL 数据库的值

php - 编辑我的帐户导航菜单编辑地址链接

javascript - 我已经尝试了所有返回 JSON 编码的 PHP 对象的方法 - 为什么它不起作用?

smarty - 如何在CMS页面中包含钩子(Hook)?