无法在 Opencart 2 中加载自定义控制器
Cannot load custom controller in Opencart 2
我在 "admin/controller/mycustomcontroller/mycustomcontroller.php"
中创建了一个自定义控制器来为我的后端模块处理一些 AJAX 请求。此自定义控制器包含我打算使用的 add()
方法。
情况:
- 我给了 Administrator 用户组 read/write 权限。
- 通过 AJAX 调用我的自定义控制器的
add
方法工作正常。
- 和直接通过url访问一样
route=mycustomcontroller/mycustomcontroller.php/add
问题:
我无法使用以下方式加载控制器:
$this->load->controller('mycustomcontroller/mycustomcontroller/add');
我试图将它加载到 admin/controller/catalog/product.php
文件和我的模型文件中,但它 returns 什么都没有(没有结果,没有错误,没有)。
我是 Opencart 的新手,我不知道问题出在哪里,在最坏的情况下,我只会 cURL 控制器文件,但感觉不对。
经过多次测试终于找到了问题所在,而且很傻。
假设您希望您的控制器 return 一个编码的 json
字符串,以便您可以在 javascript 中使用它,您可以(按习惯)编写:
$this->response->setOutput(json_encode($result));
大错特错!当调用 load->controller()
方法时,不会考虑通过此函数设置的输出,因此即使您的 AJAX/JS 仍然可以正常工作,但其他任何东西都不会。而是使用:
return json_encode($result)
之前没有人偶然发现这个问题让我感到惊讶,我要么是愚蠢的,要么是在 OC 文档中遗漏了一些重要的东西。
我在 "admin/controller/mycustomcontroller/mycustomcontroller.php"
中创建了一个自定义控制器来为我的后端模块处理一些 AJAX 请求。此自定义控制器包含我打算使用的 add()
方法。
情况:
- 我给了 Administrator 用户组 read/write 权限。
- 通过 AJAX 调用我的自定义控制器的
add
方法工作正常。 - 和直接通过url访问一样
route=mycustomcontroller/mycustomcontroller.php/add
问题:
我无法使用以下方式加载控制器:
$this->load->controller('mycustomcontroller/mycustomcontroller/add');
我试图将它加载到
admin/controller/catalog/product.php
文件和我的模型文件中,但它 returns 什么都没有(没有结果,没有错误,没有)。
我是 Opencart 的新手,我不知道问题出在哪里,在最坏的情况下,我只会 cURL 控制器文件,但感觉不对。
经过多次测试终于找到了问题所在,而且很傻。
假设您希望您的控制器 return 一个编码的 json
字符串,以便您可以在 javascript 中使用它,您可以(按习惯)编写:
$this->response->setOutput(json_encode($result));
大错特错!当调用 load->controller()
方法时,不会考虑通过此函数设置的输出,因此即使您的 AJAX/JS 仍然可以正常工作,但其他任何东西都不会。而是使用:
return json_encode($result)
之前没有人偶然发现这个问题让我感到惊讶,我要么是愚蠢的,要么是在 OC 文档中遗漏了一些重要的东西。