首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从管理端使用正面模型功能

从管理端使用正面模型功能
EN

Stack Overflow用户
提问于 2012-05-29 13:24:58
回答 3查看 2K关注 0票数 0

我正在开发opencart 版本1.5.1.3。在某一阶段,我想在管理端控制器文件中使用前端模型函数。

有人能帮帮我吗?我会很感激的。

EN

回答 3

Stack Overflow用户

发布于 2015-07-05 08:45:21

我知道现在很晚了,但可能对以后的工作有用。

简单地说,您可以向/system/engine/loader.php添加一个函数。但你可能知道,直接做这件事可能会在将来伤害你。那就通过vqmod来做吧。我来告诉你如何:

代码语言:javascript
复制
<?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模型,请使用以下内容:

代码语言:javascript
复制
$this->load->catalogModel('shipping/flat');
票数 5
EN

Stack Overflow用户

发布于 2012-05-29 13:49:53

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

票数 3
EN

Stack Overflow用户

发布于 2014-04-11 18:34:10

这就是我所做的:您有一个模型目录/ model /foo/Frontbar.php和另一个模型admin/ model /foo/adminbar.php。

您希望在frontbar.php中嵌入adminbar.php,然后访问frontbar的方法。

在adminbar.php中,可以这样做:

代码语言:javascript
复制
<?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;
  }
}
?>

然后在您的管理控制器中执行如下操作:

代码语言:javascript
复制
$this->load->model('foo/adminbar');
$this->data['someFrontData'] = $this->model_foo_adminbar->fromFront()->getSomeMethodInFrontbar();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10800115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档