我在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;
}
}
答案 0 :(得分:1)
首先需要将注册这个助手注册到注册表中,例如在index.php
查找行
// Encryption
$registry->set('encryption', new Encryption($config->get('config_encryption')));
(参考OC 1.5.5及更高版本)并在此寄存器之后以相同方式注册您的助手,例如
// General
$registry->set('general', new General()));
这应该足够了。如果您有一些依赖项,请务必更改构造函数调用...