Я работаю над версией 1.5.1.3 . На одном этапе я хочу использовать функцию фронтальной стороны в файле контроллера администратора.
Кто-нибудь может мне помочь, пожалуйста.? Было бы признательно.
Я знаю, что это поздно, но, возможно, полезно для будущих работ.
Просто вы можете добавить функцию в /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
модели каталога каталога в admin используйте это:
$this->load->catalogModel('shipping/flat');
Проще говоря, вы не можете. Что вам нужно сделать, это либо дублировать файл модели, если одно имя не существует в стороне администратора, или добавить метод, который вам нужен для файла модели с правами администратора
Это то, что я сделал: у вас есть модельный каталог / model / foo / frontbar.php и еще одна модель admin / model / foo / adminbar.php
Вы хотите inlcude frontbar.php в adminbar.php, а затем обратиться к методам передних панелей.
в 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();