如何在OpenCart 2中创建单独的自定义注册表单?

时间:2015-12-11 02:23:38

标签: php forms registration opencart2.x

我是OpenCart 2的新手。默认情况下,OpenCart提供了该框的客户注册表单。我想为公司创建另一个注册表单作为用户,其输入字段不同于客户注册表单。

我复制了以下文件并正确重命名。

- catalog/controller/account/register.php
- catalog/model/account/customer.php
- template/account/register.tpl

我已经为注册公司创建了一个新的数据库表。当我查看addCustomer($data)模型中的ModelAccountCustomer函数时,我坚持使用以下代码行。

$this->event->trigger('pre.customer.add', $data);

我想在$this->event->trigger('pre.company.add', $data);模型的addCompany($data)函数中将其更改为ModelAccountCompany。但它会导致错误。我该如何解决?

另一个问题是我的ControllerAccountRegisterCustomer控制器内的以下代码行。

$this->customer->isLogged()
and
$this->customer->login();

我想将类似的代码放在我的ControllerAccountRegisterCompany控制器中,如下所示。

$this->company->isLogged()
and
$this->company->login();

但是$this->company没有返回公司对象来调用它的'功能。我该如何解决?

1 个答案:

答案 0 :(得分:1)

如果要创建$this->event->trigger('pre.company.add', $data);之类的自定义事件处理程序。首先,您需要在数据库中安装此事件。请检查以下样本。

<?php class ControllerModuleA2bizz extends Controller { 

 public function install() { 
    $this->load->model('extension/event');
    $this->model_extension_event->addEvent('a2bizz', 'pre.admin.store.delete', 'module/a2bizz/on_store_delete');
    $this->model_extension_event->addEvent('a2bizz', 'post.customer.add', 'module/a2bizz/on_customer_add');

 }

public function uninstall() {
    $this->load->model('extension/event');
    $this->model_extension_event->deleteEvent('a2bizz');
}

public function on_store_delete($store_id) {
    $this->load->model('setting/store');
    $store_info = $this->model_setting_store->getStore($store_id);
    $admin_mail = $this->config->get('config_email');
    mail($admin_mail, "A store has been deleted", "The store " . $store_info['url'] . " was deleted.");
 }
}

有关opencart 2.x中事件处理程序的更多信息。 problem