2012-05-29 7 views

ответ

3

Проще говоря, вы не можете. Что вам нужно сделать, это либо дублировать файл модели, если одно имя не существует в стороне администратора, либо добавить метод, который вам нужен для файла модели администратора.

2

Это то, что я сделал: у вас есть модель каталог/модель/Foo/frontbar.php и другая модель админ/модель/Foo/adminbar.php

Вы хотите inlcude frontbar.php в adminbar.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(); 
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.
Теперь для использования, например, shipping/flat модель каталога каталога в администрации администратора:

$this->load->catalogModel('shipping/flat');