opencart创建和使用自定义帮助程序

时间:2014-03-25 13:09:52

标签: php opencart helper

我在opencart中创建了一个帮助器,我在stackoverflow上找到了这些信息,但是我遇到了一个问题:

首先,我创建了一个名为general.php的帮助文件,并放在文件夹中:

system/helper/general.php

然后在startup.php文件

中开始
require_once(DIR_SYSTEM 'helper/general.php');

最后,我在控制器中使用它:register.php位于文件夹catalog/controller/account/register.php内。

我用这种方式使用它:

if (empty($this->request->post['doc']) && $this->general->validate($this->request->post['doc'])) {
    $this->error['doc'] = 'doc is invalid';
}

并返回以下错误:

Fatal error: Call to a member function validate() on a non-object in / home/centralshopdistribuidora/www/vqmod/vqcache/vq2-catalog_controller_account_register.php on line 515

第515行:

if (empty($this->request->post['doc']) && $this->general->validate($this->request->post['doc'])) {

general.php文件:

function validate($doc) {
    $d1 = 0;
    $d2 = 0;
    $doc = preg_replace("/[^0-9]/", "", $doc);
    $ignore_list = array(
        '00000000000',
        '01234567890',
        '11111111111',
        '22222222222',
        '33333333333',
        '44444444444',
        '55555555555',
        '66666666666',
        '77777777777',
        '88888888888',
        '99999999999'
    );
    if (strlen($doc) != 11 || in_array($doc, $ignore_list)) {
        return false;
    } else {
        for ($i = 0; $i < 9; $i++) {
            $d1 += $doc[$i] * (10 - $i);
        }
        $r1 = $d1 % 11;
        $d1 = ($r1 > 1) ? (11 - $r1) : 0;
        for ($i = 0; $i < 9; $i++) {
            $d2 += $doc[$i] * (11 - $i);
        }
        $r2 = ($d2 + ($d1 * 2)) % 11;
        $d2 = ($r2 > 1) ? (11 - $r2) : 0;
        return (substr($doc, -2) == $d1 . $d2) ? true : false;
    }
}

1 个答案:

答案 0 :(得分:1)

首先需要注册这个助手注册到注册表中,例如在index.php查找行

// Encryption
$registry->set('encryption', new Encryption($config->get('config_encryption')));

(参考OC 1.5.5及更高版本)并在此寄存器之后以相同方式注册您的助手,例如

// General
$registry->set('general', new General()));

这应该足够了。如果您有一些依赖项,请务必更改构造函数调用...