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 426

Если честно не особо понимаю зачем вызывать в 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

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


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

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

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

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

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

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

Войти

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

Войти


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

    • От 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 не верен,
      потратив пару часов докопался до этого момента
       
      вопрос в следующем: если какой способ, проверки существования модуля? перед загрузкой его
       
       
       
    • От Akatyi
      Ребята выручайте, нужно увеличить количество символов в поле model.. сейчас там только 64 символа. нужно гораздо больше. например 255. 
       
      в данный момент 
      в admin\controller\catalog
      файл product.php закомментирована строка как видно. (как понимаю это у нас просто проверка на заполнено поле модель или нет?!)
      открывал её обратно. 64 менял на 255.. 
      /* if ((utf8_strlen($this->request->post['model']) < 1) || (utf8_strlen($this->request->post['model']) > 64)) { $this->error['model'] = $this->language->get('error_model'); } */ в phpMyAdmin oc_order_product поле model менял на varchar(255)
      толку 0 всё равно обрезает на 64 символах..
       
      что я ещё упустил из виду?
      Версия ocStore 2.1.0.2
       
  • Последние посетители   0 пользователей онлайн

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