I'm working on opencart Version 1.5.1.3. At one stage i want to use front side model function in the admin side controller file.
Can anyone please help me.? It would be appreciated.
我知道它已经晚了,但可能对未来的工作有用。
只需将功能添加到您的/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
.
现在要在管理员中使用例如shipping/flat
目录目录模型,请使用:
$this->load->catalogModel('shipping/flat');
简单地说,你不能。如果管理员端不存在同名的模型文件,您需要做的是复制模型文件,或者将您需要的方法添加到管理员端模型文件
这就是我所做的:你有一个模型 catalog/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();