我是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
没有返回公司对象来调用它的'功能。我该如何解决?
答案 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