我正在开发opencart 版本1.5.1.3 。 在一个阶段,我想在管理员端控制器文件中使用正面模型功能。
任何人都可以帮助我。我们将不胜感激。
答案 0 :(得分:4)
我知道它已经很晚了,但对未来的作品可能有用
您只需向/system/engine/loader.php
添加功能即可。但你可能知道直接这样做可能会在将来伤害你。所以通过vqmod
来做。我会告诉你如何:
<?xml version="1.0" encoding="UTF-8"?>
<modification>
<id>Loadin Catalog Models</id>
<version>1.0</version>
<vqmver>2.X</vqmver>
<author>Hossein Shahsahebi</author>
<file name="system/engine/loader.php">
<operation info="Add function which I could access catalog models from admin">
<search position="after"><![CDATA[
protected $registry;
]]></search>
<add><![CDATA[
public function catalogModel($model) {
$file = DIR_CATALOG . 'model/' . $model . '.php';
$class = 'Model' . preg_replace('/[^a-zA-Z0-9]/', '', $model);
if (file_exists($file)) {
include_once($file);
$this->registry->set('model_' . str_replace('/', '_', $model), new $class($this->registry));
} else {
trigger_error('Error: Could not load model ' . $model . '!');
exit();
}
}
]]></add>
</operation>
</file>
</modification>
您可以将此代码放在文件名your_own_chosen_name.xml
中,并将其放在/vqmod/xml
中
现在用于例如admin中目录目录的shipping/flat
模型使用:
$this->load->catalogModel('shipping/flat');
答案 1 :(得分:3)
简单地说,你不能。您需要做的是复制模型文件,如果管理员端中不存在相同的名称,或者将您需要的方法添加到管理员模型文件
答案 2 :(得分:2)
这就是我所做的: 你有一个模型目录/ model / foo / frontbar.php 和另一个模型admin / model / foo / adminbar.php
您想要在adminbar.php中包含frontbar.php,然后访问frontbar的方法。
adminbar.php中的执行以下操作:
<?php
include_once __DIR__.'/../../../catalog/model/foo/frontbar.php';
class ModelFooAdminbar extends Model {
private $frontInstance;
public function fromFront()
{
if(!$this->frontInstance){
$this->frontInstance = new ModelFooFrontbar($this->registry);
}
return $this->frontInstance;
}
}
?>
然后在您的管理控制器中执行以下操作:
$this->load->model('foo/adminbar');
$this->data['someFrontData'] = $this->model_foo_adminbar->fromFront()->getSomeMethodInFrontbar();