使用管理员端的正面模型功能

时间:2012-05-29 13:24:59

标签: php opencart

我正在开发opencart 版本1.5.1.3 。 在一个阶段,我想在管理员端控制器文件中使用正面模型功能。

任何人都可以帮助我。我们将不胜感激。

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();