kagan

Как можно подгрузить модель в library/cart/cart.php

Рекомендуемые сообщения

kagan    31

Приветствую.

 

Подскажите пожалуйста как можно подключить свою модель в OpenCart 2.2 в библиотеке system/library/cart.cart.php

 

Пробовал так:

require_once(dirname(DIR_APPLICATION) . '/catalog/model/catalog/category.php');

$catalog_category_model = new ModelCatalogCategory($this->registry);
$result = $catalog_category_model->getCategory(5);

echo $result;

Результат:

Fatal error: Class 'Cart\ModelCatalogCategory' not found in /home/hoursco/dev/new/system/library/cart/cart.php on line 44

Другие варианты тоже пробовал, не помогло. Сейчас нуждаюсь в подсказке..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
kagan    31

..

Fatal error: Class 'Cart\ModelCatalogCategory' not found in /home/hoursco/dev/new/system/library/cart/cart.php on line 41

Видимо из-за namespace'а, который указан в верху.

namespace Cart;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
kagan    31

Решено. Рабочий вариант:

global $loader;

$loader->model('catalog/product');
$model = $registry->get('model_catalog_product');

echo "<pre>";
echo var_dump($model->getProduct(47));
echo "</pre>";
Изменено пользователем kagan

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
kagan    31

Только после таких манипуляций на стороне сайта, в админке выбрасывает исключение, что модель не может быть загружена. (применил к своему модулю)

 

3BcarLY.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
kagan    31

Частичное, но не полное решение, т.к. исключение вылетало из-за того, что не могло подгрузить модель которая не существует.

if (!defined('HTTP_CATALOG')) {
    global $loader;

    $loader->model('module/timer');
    $this->model_module_timer = $registry->get('model_module_timer');
}

Прописав else, т.е. когда мы находимся в админке и обращаемся к system/library/cart/cart.php с другим путем к модели, все равно выкидывает исключение хотя пути прописаны правильно.

Изменено пользователем kagan

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
markimax    1 531

Если честно не особо понимаю зачем вызывать в library model

Вызывайте там контроллер (в папке controller который), который будет вызывать модель

И... system/library/cart/cart.php у вас выступает каким классом? extends Controller ?

Т е суть такая - вызывайте модель из extends Controller. Это будет более правильно с точки зрения архитектуры

P.S. Это то что я хотел написать выше в "двух точках", но отвлекли и времени не было

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
kagan    31

markimax, Необходимо для проверки через метод, который там находится. Он используется не в 1 контроллере, поэтому я его вынес в модель.

 

/system/library/cart/cart.php

класс Cart в данном случае не наследуется, это OC 2.2.0.0

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Похожий контент

    • От tambu34
      Знаю, подобные треды были, но ответа для себя я так и не нашел. Просьба разжевать для меня.
      В Opencart есть поле model - некоторые говорят, что это код товара (артикул). В ocStore 2.1 в карточке товара выводится как "код товара". У себя я так и заполняю, уникальный код товара. Сейчас я задаюсь вопросом в реализации следующего: нужно, чтобы при нажатии на производителя выводился список моделей товаров (не артикулов), например:
      Шина Rosava --> модель Snowgard. И так далее. Какое всё же поле для этого стоит использовать? Может код товара перенести в SKU ?
      Вопрос иерархии меня немного тревожит, может быть я вообще хочу немного странного.
      Сейчас так: Категория-подкатегория-товар. (разные размеры одинаковых товаров хранятся в атрибутах)
      Рассматриваю также: Производитель-модель-товар. Возможно для такой реализации нужен отдельный модуль?
      Разжуйте мне на пальцах, как в Opencart 2 правильно внедрить понятие "Модель товара" (не артикул или код товара).
      Спасибо.
    • От Dzusto
       Как сделать необязательной к заполнению "Модель" ocstore 2.3 ? Все описанные способы в т.ч и на этом форуме уже опробованы и не работают. Выходит ошибка. Поле убирать не нужно, так как оно нужно, но надо сделать его необязательным , т.е. если нет - то пусть будет пусто.
    • От FlyShk




      Название: 3d viewer Opencart 2.0
      Добавил: FlyShk
      Добавлен: 02 нояб. 2014
      Категория: Модули
      Метод активации: Без активацииIoncube Loader: Нет


      3D Object Viewer Opencart 2
      Модуль позволяет выводить исходный файл 3D обьекта из корневой папки сайта на страницу товара.
      Обладает адаптивными свойствами и полной поддержкой планшетных и мобильных устройств.
      Работает полностью на JavaScript, использует технологию Webgl и библиотеку JS + Html5.
      Работает с такими форматами как:
      - Wavefront obj File
      - STL File
      Пример: http://3dopencart2.esy.es/

      Нажмите здесь, чтобы скачать файл
    • От FlyShk
      3D Object Viewer Opencart 2
      Модуль позволяет выводить исходный файл 3D обьекта из корневой папки сайта на страницу товара.
      Обладает адаптивными свойствами и полной поддержкой планшетных и мобильных устройств.
      Работает полностью на JavaScript, использует технологию Webgl и библиотеку JS + Html5.
      Работает с такими форматами как:
      - Wavefront obj File
      - STL File
      Пример: http://3dopencart2.esy.es/
    • От wladimirbm
      Появилась такая проблема, что после конвертации и переноса базы с 1.5 на 2.1, в базе осталось много кодов модулей, которых нет в новой версии, и опенкарт об этой даже не парится
       
      к примеру в файле \catalog\controller\api\order.php
      // If current order status is not processing or complete but new status is processing or complete then commence completing the order if (!in_array($order_info['order_status_id'], array_merge($this->config->get('config_processing_status'), $this->config->get('config_complete_status'))) && in_array($order_status_id, array_merge($this->config->get('config_processing_status'), $this->config->get('config_complete_status')))) { // Redeem coupon, vouchers and reward points $order_total_query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "order_total` WHERE order_id = '" . (int)$order_id . "' ORDER BY sort_order ASC"); foreach ($order_total_query->rows as $order_total) { $this->load->model('total/' . $order_total['code']); if (@method_exists($this->{'model_total_' . $order_total['code']}, 'confirm')) ... он просто падает на строке -                 $this->load->model('total/' . $order_total['code']);
      пытаясь загрузить модуль, которого нет. у меня это был - cartsummcounter
      к тому же этот именно момент вызывается аяксом, и ошибка по сути ужасно глупая, что мол json не верен,
      потратив пару часов докопался до этого момента
       
      вопрос в следующем: если какой способ, проверки существования модуля? перед загрузкой его
       
       
       
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу