我需要在checkout / confirm.tpl文件中调用我在controller / product.PHP中创建的自定义函数
什么是最好的方法呢?
我试过这个,但不起作用:
$productController = $this->load->model('product/product');
$productController->customFunction();
解决方法:
> MVC
>在MVC架构中,模板仅用于呈现/显示数据;它不应该(*)调用控制器/模型函数,也不应该像我在许多第三方模块中看到的那样执行SQL查询(甚至在SO的答案中).
> $productController = $this-> load-> model(‘product / product’);
>漂亮的眼睛必须发现你正在尝试将模型加载到由控制器命名的变量中,并且你也试图以这种方式使用它.那么,为了你的目的,必须在类Loader中有一个方法controller() – 这不是(幸运的)
>应该如何做?
>确保有一种方法可以从模板中访问或调用控制器功能.在MVC中,由路由调用的可调用函数称为操作.使用这句话我现在可以说你可以通过访问某个URL来调用一个动作(控制器功能).
因此,假设您的控制器是CatalogProductController,您要调用的方法是custom() – 在这种情况下访问此URL
http://yourstore.com/index.PHP?route=catalog/product/custom
您将确保调用/访问CatalogProductController的custom()方法.
您可以通过多种方式访问此类URL – 作为cURL请求,作为链接的href或通过AJAX请求来命名.在PHP范围内,即使file_get_contents()或类似的方法也可以.
(*)我不应该意味着(不幸的是)它可能在OpenCart中,但这种滥用是针对MVC架构的.