我正在使用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;
}
我想在管理员控制器中加载此模型。做这个的最好方式是什么? 我应该在管理员中重写这个模型吗?但我不想重写相同的功能。如果有好方法请建议!
答案 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'