如何在Opencart的另一个PHP文件(不是控制器文件)中调用Controller类?

时间:2019-07-12 11:41:19

标签: php opencart opencart-3

我正在使用Opencart3,我想从ControllerCatalogCategory控制器中调用类似add()的控制器函数。我该怎么做?

 include '../../system/engine/controller.php';
 include '../controller/catalog/category.php';
 $get_cat = new ControllerCatalogCategory();
 $get_cat->load->language('catalog/category');
 $get_cat->load->model('catalog/category');
 $category_info = $this->model_catalog_category->getCategoryDescriptions(trim("Handheld Vocal"));
 print_r($category_info); exit();

但是这样会发生错误吗?

  

致命错误:未捕获ArgumentCountError:函数Controller :: __ construct()的参数太少,第9行的C:\ laragon \ www \ proaudiony \ admin \ admin \ header.php中传递了0,而在C中恰好期望了1: \ laragon \ www \ proaudiony \ system \ engine \ controller.php:16堆栈跟踪:#0 C:\ laragon \ www \ proaudiony \ admin \ admin \ header.php(9):控制器-> __ construct()#1 C :\ laragon \ www \ proaudiony \ admin \ admin \ index.php(3):include('C:\ laragon \ www \ ...')#2 {main}放在C:\ laragon \ www \ proaudiony \第16行的system \ engine \ controller.php

1 个答案:

答案 0 :(得分:0)

通常,您不应从另一个控制器调用控制器功能。您应该将逻辑移至“模型” ,然后在控制器中对其进行调用。然后,您可以使用以下代码$this->load->controller('controller_path);加载控制器。

我建议您将逻辑移至“模型”并加载所需的任何控制器。这将是容易且可重用的。