0

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.

4

3 回答 3

5

我知道它已经晚了,但可能对未来的工作有用。
只需将功能添加到您的/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');
于 2015-07-05T08:45:21.670 回答
3

简单地说,你不能。如果管理员端不存在同名的模型文件,您需要做的是复制模型文件,或者将您需要的方法添加到管理员端模型文件

于 2012-05-29T13:49:53.010 回答
2

这就是我所做的:你有一个模型 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();
于 2014-04-11T18:34:10.473 回答