如何在管理控制器中加载目录模型

时间:2016-02-13 18:43:19

标签: opencart

我正在使用Opencart版本2.1.0.1,如何在管理控制器中加载前端模型,

我有一个模型功能,告诉外部预订ID

class ModelShippingParcelled extends Model {
        public function getParcelledBooking($order_id) {
             $query = $this->db->query("SELECT booking_id FROM " . DB_PREFIX . "parcelled WHERE order_id = '" . (int)$order_id . "'");
             return $query->row;
    }

我想在管理员控制器中加载此模型。做这个的最好方式是什么? 我应该在管理员中重写这个模型吗?但我不想重写相同的功能。如果有好方法请建议!

3 个答案:

答案 0 :(得分:0)

嗯,实现你想要的东西有一个难看的伎俩。例如,如果要使用管理控制器中的前端目录/产品模型,则可以:

require_once $_SERVER['DOCUMENT_ROOT'] . "/catalog/model/catalog/product.php";
$product = new ModelCatalogProduct($this->registry);

当您想要使用前端控制器中的管理模型时,这也可以使用,只需更改require语句。

答案 1 :(得分:0)

我建议您在admin文件夹中复制模型。 如果你确定你将使用哪些功能只复制它们。

答案 2 :(得分:0)

我还需要从catalog/model内部的admin/model调用一个函数(不进行复制)。 Requiring a function在php中似乎是不可能的。 但是我发现可以将函数移至system/library中,例如在/system/library/cart/cart.php中。 尽管购物车功能从未在管理员中调用过,但它似乎是可能的。所以我这样称呼它

$this->cart->functionName($params)

为确保功能仍在目录中运行,我通过

这样的外壳进行了替换

find catalog -type f -print0 | xargs -0 sed -i '' -e 's/this->model_catalog_filter->functionName/this->cart->functionName/g'