amfsota Опубликовано: 22 июля 2017 Поделиться Опубликовано: 22 июля 2017 Здравствуйте, уважаемые форумчане. Требуется создать в папке system/library собственную модель, например "system/library/documents.php" 1. Нужно ли где-нибудь в движке её регистрировать, если да, то как? 2. Как подключать модель из контроллера? "this->documents->hello()" так правильно? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
ocdev_pro Опубликовано: 22 июля 2017 Поделиться Опубликовано: 22 июля 2017 amfsota, Модель должна лежать в папке catalog/model для пользовательской части и admin/model для админской. А своя библиотека, это нечто иное и в контроллере подключается как $this->library->load('tvoya_liba'); и дальше используете $this->tvoya_liba->hello(); 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 22 июля 2017 Автор Поделиться Опубликовано: 22 июля 2017 спасибо за ответы 19 минут назад, Waha сказал: amfsota, Модель должна лежать в папке catalog/model для пользовательской части и admin/model для админской. А своя библиотека, это нечто иное и в контроллере подключается как $this->library->load('tvoya_liba'); и дальше используете $this->tvoya_liba->hello(); дело в том, что системные библиотеки где-то подключаются один раз и дальше их использовать в любом контроллере можно так: this->documents->hello(), без отдельной загрузки. Вопрос где происходит это подключение (в каком файле), никак найти не могу. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ocdev_pro Опубликовано: 22 июля 2017 Поделиться Опубликовано: 22 июля 2017 amfsota, Да что там искать, startup.php Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 22 июля 2017 Автор Поделиться Опубликовано: 22 июля 2017 (изменено) 7 минут назад, Waha сказал: amfsota, Да что там искать, startup.php Прошу прощения за тупость. Не нашёл там явного указания на конкретные файлы. Они регистрируются автоматически? Просто все файлы из директории library? Вот здесь? // Autoloader function library($class) { $file = DIR_SYSTEM . 'library/' . str_replace('\\', '/', strtolower($class)) . '.php'; if (is_file($file)) { include_once(modification($file)); return true; } else { return false; } } Изменено 22 июля 2017 пользователем amfsota Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 23 июля 2017 Автор Поделиться Опубликовано: 23 июля 2017 Ничего не получается с библиотекой. Что делал: 1. Создал контроллер "catalog/controller/calculators/main.php" <?php class ControllerCalculatorsMain extends Controller { public function start() { $this->load->library('calculators/testcalc'); $json = array(); $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } } ?> 2. Создал библиотеку с классом: "system/library/calculators/testcalc.php" <?php class Testcalc { public function calculate($data) { return $data; } } ?> 3. Если в представлении происходит событие ajax-ом делается post запрос в контроллер: function recalc() { msg="quantity="+document.getElementById("input-quantity").value+"&"+($('#calculator').serialize()); $.ajax({ url: 'index.php?route=calculators/main/start', type: 'post', data: msg, dataType: 'json', beforeSend: function() { }, success: function(json) { alert ('SUCCESS'); if (json['error']) { alert (json['error']); } if (json['success']) { document.getElementById("input-quantity").value = json['quantity']; document.getElementById("price").innerHTML = json['total']+' руб.<small> ('+json['price'] + ' р./шт)</small>'; } }, error: function(xhr, ajaxOptions, thrownError) { alert ('ERROR'); } }); } Проверяем. В итоге ошибка 'ERROR' Теперь комментируем эту строку в контроллере : "$this->load->library('calculators/testcalc');" Опять запускаем, всё ОК, сообщение: 'SUCCESS' Вывод - не подключается библиотека. По какой причине понять не могу. Пробовал подключать системные библиотеки - то же самое. Помогите, пожалуйста, уже запарился пробовать разные варианты. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... AlexDW Опубликовано: 23 июля 2017 Поделиться Опубликовано: 23 июля 2017 1 час назад, amfsota сказал: $this->load->library('calculators/testcalc'); 1 час назад, amfsota сказал: class Testcalc { namespace Calculators class Testcalc { Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 23 июля 2017 Автор Поделиться Опубликовано: 23 июля 2017 Спасибо за ссылки, но не получается ничего. Блин что такое, ничего понят не могу??? <?php class ControllerCalculatorsMain extends Controller { public function start() { $this->load->library('cart');//ЗДЕСЬ ОШИБКА!!! Что неправильно, подключаю ведь системную библиотеку. $json = array(); $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } } ?> Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 23 июля 2017 Автор Поделиться Опубликовано: 23 июля 2017 Понятно... https://github.com/opencart/opencart/issues/3469 В opencart.pro 2 сделали автолоудер для всех библиотек, теперь $this->load->library('cart') не работает Чё делать совсем не пойму, ни один пример из инета не работает. А так надо сделать свою библиотеку. Не хочется плодить кучу дублирующегося кода для админки и каталога. Ребята, может кто всё же знает как на новом движке подключать свои библиотеки? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 23 июля 2017 Автор Поделиться Опубликовано: 23 июля 2017 УРАААА!!!!! Целый день бьюсь. $this->registry->set('mylibrary', new Mylibrary($this->registry)); Так заработало, может кому надо будет. Всё, тему можно закрывать. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 25 июля 2017 Автор Поделиться Опубликовано: 25 июля 2017 Я опять тут. с подключением библиотеки из контроллеров и моделей разобрался. Сейчас нарисовалась проблема, как подключить класс из системной библиотеки. конструкция постом выше не работает. Я из системной библиотеки 'cart.php' пытаюсь подключиться к своей таким методом: $this->registry->set('calculators', new Calculators($this->registry)); В итоге получаю ошибку: Notice: Undefined property: Cart::$registry in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 39 Fatal error: Call to a member function set() on a non-object in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 39 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... chukcha Опубликовано: 25 июля 2017 Поделиться Опубликовано: 25 июля 2017 так вам же пишут черным по белому - нет такого свойства, в конструктор registry передается, но нигде в свойствах не запоминается Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Очень интересно. Как всё непросто с этим веб программированием, то ли дело на десктопе, любая библиотека, даже стороннего приложения прилепляется везде по одинаковому. Решение-то какое-нибудь есть? Почему этот же код прекрасно работает и в модулях админки и каталога, а здесь вдруг нет свойсва regisrty? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... chukcha Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 причем здесь вебпрограммирование? 2 часа назад, amfsota сказал: Почему этот же код прекрасно работает и в модулях админки и каталога, Потому что ООП Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Да бог с ним с ООП... Подскажите как профиксить? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... snastik Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 В каком месте вы его хотите получить ? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Правлю файл: /public_html/mymetab.ru/system/library/cart.php (нужно, чтобы расчёт стоимости товара шёл по алгоритмам калькуляторов) Есть своя библиотека: /public_html/mymetab.ru/system/library/calculators.php (здесь собраны методы с разными калькуляторами) Нужно использовать методы из calculators.php в cart.php. А зарегистрировать класс calculators не получается. Версия 2.1.0.1.10. Помогите, пожалуйста. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... snastik Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 Тогда вам не нужен ваш экземпляр класса в глобальном контейнере $registry Вы просто можете его вызвать в нужном месте в классе Cart. С помощью простой конструкции. $this->load->library('calculators/testcalc'); $testcalc = New Testcalc(); И дальше к примеру. $cost = $testcalc->method($cost ); Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 теперь: Notice: Undefined property: Cart::$load in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 172 load насколько я понимаю в версии Pro не работает, там автолодер: Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... chukcha Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 подключите библиотеку в конструкторе public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); //!!!!!!!! $this->load = $registry->get('load'); 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Не работает. Файл /library/calculators.php: <?php class Calculators { private $data = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); } ..... Файл /library/cart.php: class Cart { private $data = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); $this->calculators = $registry->get('calculators'); .... public function getProducts() { .... $calculators= new Calculators(); $calcprice = $calculators->refreshPrice($cart); .... Ошибка: Warning: Missing argument 1 for Calculators::__construct(), called in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 177 and defined in /var/www/u0328033/public_html/mymetab.ru/system/library/calculators.php on line 5Notice: Undefined variable: registry in /var/www/u0328033/public_html/mymetab.ru/system/library/calculators.php on line 6 Fatal error: Call to a member function get() on a non-object in /var/www/u0328033/public_html/mymetab.ru/system/library/calculators.php on line 6 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... chukcha Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 Вы восклицательные знаки видели? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 class Cart { private $data = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); $this->load = $registry->get('load'); //вставил ... $this->load->library('calculators'); $calculators= new Calculators(); ... Опять ошибка: Fatal error: Call to undefined method Loader::library() in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 173 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Как мне посоветовали - так и пробую. Я не понимаю, почему свойство registry в моделях работает, а из системной библиотеки - нет. Блин, задача-то вроде простая - подключить класс. А никак не получается. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... snastik Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 3 минуты назад, nikifalex сказал: ничего не понимаю. Вначале ТС показал себя как нормальный специалист. Вроде. А потом как буд-то подменили и он стал писать $this->load = $registry->get('loa мде.... вы бы версию написали.... если у вас класс уже загрузился автолоадером то просто $calc= new Calc(); если нет: require_once( path_to_lib ); 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Назад 1 2 Вперёд Страница 1 из 2 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 0 Перейти к списку тем Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Поддержка и ответы на вопросы Общие вопросы Создание и доступ к собственной системной библиотеке Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Deals – адаптивный универсальный шаблон Автор: octemplates Динамичесткая инфострока в шапке + позиция в макете для opencart\ocstore 2x, 3x Автор: Lito911 Единицы Измерения Товара Автор: RoS Opencart Product Search by Image Автор: slavoglo Простой массовый редактор цен. Fast Price Edit Автор: Sha × Уже зарегистрированы? Войти Регистрация Раздел покупок Назад Приобретенные дополнения Ваши счета Список желаний Альтернативные контакты Форум Новости ocStore Назад Официальный сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Скачать ocStore Документация История версий ocStore Блоги Модули Шаблоны Назад Бесплатные шаблоны Платные шаблоны Где покупать модули? Услуги FAQ OpenCart.Pro Назад Демо Купить Сравнение × Создать... Важная информация На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности. Я принимаю
amfsota Опубликовано: 22 июля 2017 Автор Поделиться Опубликовано: 22 июля 2017 спасибо за ответы 19 минут назад, Waha сказал: amfsota, Модель должна лежать в папке catalog/model для пользовательской части и admin/model для админской. А своя библиотека, это нечто иное и в контроллере подключается как $this->library->load('tvoya_liba'); и дальше используете $this->tvoya_liba->hello(); дело в том, что системные библиотеки где-то подключаются один раз и дальше их использовать в любом контроллере можно так: this->documents->hello(), без отдельной загрузки. Вопрос где происходит это подключение (в каком файле), никак найти не могу. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
ocdev_pro Опубликовано: 22 июля 2017 Поделиться Опубликовано: 22 июля 2017 amfsota, Да что там искать, startup.php Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 22 июля 2017 Автор Поделиться Опубликовано: 22 июля 2017 (изменено) 7 минут назад, Waha сказал: amfsota, Да что там искать, startup.php Прошу прощения за тупость. Не нашёл там явного указания на конкретные файлы. Они регистрируются автоматически? Просто все файлы из директории library? Вот здесь? // Autoloader function library($class) { $file = DIR_SYSTEM . 'library/' . str_replace('\\', '/', strtolower($class)) . '.php'; if (is_file($file)) { include_once(modification($file)); return true; } else { return false; } } Изменено 22 июля 2017 пользователем amfsota Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 23 июля 2017 Автор Поделиться Опубликовано: 23 июля 2017 Ничего не получается с библиотекой. Что делал: 1. Создал контроллер "catalog/controller/calculators/main.php" <?php class ControllerCalculatorsMain extends Controller { public function start() { $this->load->library('calculators/testcalc'); $json = array(); $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } } ?> 2. Создал библиотеку с классом: "system/library/calculators/testcalc.php" <?php class Testcalc { public function calculate($data) { return $data; } } ?> 3. Если в представлении происходит событие ajax-ом делается post запрос в контроллер: function recalc() { msg="quantity="+document.getElementById("input-quantity").value+"&"+($('#calculator').serialize()); $.ajax({ url: 'index.php?route=calculators/main/start', type: 'post', data: msg, dataType: 'json', beforeSend: function() { }, success: function(json) { alert ('SUCCESS'); if (json['error']) { alert (json['error']); } if (json['success']) { document.getElementById("input-quantity").value = json['quantity']; document.getElementById("price").innerHTML = json['total']+' руб.<small> ('+json['price'] + ' р./шт)</small>'; } }, error: function(xhr, ajaxOptions, thrownError) { alert ('ERROR'); } }); } Проверяем. В итоге ошибка 'ERROR' Теперь комментируем эту строку в контроллере : "$this->load->library('calculators/testcalc');" Опять запускаем, всё ОК, сообщение: 'SUCCESS' Вывод - не подключается библиотека. По какой причине понять не могу. Пробовал подключать системные библиотеки - то же самое. Помогите, пожалуйста, уже запарился пробовать разные варианты. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... AlexDW Опубликовано: 23 июля 2017 Поделиться Опубликовано: 23 июля 2017 1 час назад, amfsota сказал: $this->load->library('calculators/testcalc'); 1 час назад, amfsota сказал: class Testcalc { namespace Calculators class Testcalc { Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 23 июля 2017 Автор Поделиться Опубликовано: 23 июля 2017 Спасибо за ссылки, но не получается ничего. Блин что такое, ничего понят не могу??? <?php class ControllerCalculatorsMain extends Controller { public function start() { $this->load->library('cart');//ЗДЕСЬ ОШИБКА!!! Что неправильно, подключаю ведь системную библиотеку. $json = array(); $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } } ?> Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 23 июля 2017 Автор Поделиться Опубликовано: 23 июля 2017 Понятно... https://github.com/opencart/opencart/issues/3469 В opencart.pro 2 сделали автолоудер для всех библиотек, теперь $this->load->library('cart') не работает Чё делать совсем не пойму, ни один пример из инета не работает. А так надо сделать свою библиотеку. Не хочется плодить кучу дублирующегося кода для админки и каталога. Ребята, может кто всё же знает как на новом движке подключать свои библиотеки? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 23 июля 2017 Автор Поделиться Опубликовано: 23 июля 2017 УРАААА!!!!! Целый день бьюсь. $this->registry->set('mylibrary', new Mylibrary($this->registry)); Так заработало, может кому надо будет. Всё, тему можно закрывать. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 25 июля 2017 Автор Поделиться Опубликовано: 25 июля 2017 Я опять тут. с подключением библиотеки из контроллеров и моделей разобрался. Сейчас нарисовалась проблема, как подключить класс из системной библиотеки. конструкция постом выше не работает. Я из системной библиотеки 'cart.php' пытаюсь подключиться к своей таким методом: $this->registry->set('calculators', new Calculators($this->registry)); В итоге получаю ошибку: Notice: Undefined property: Cart::$registry in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 39 Fatal error: Call to a member function set() on a non-object in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 39 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... chukcha Опубликовано: 25 июля 2017 Поделиться Опубликовано: 25 июля 2017 так вам же пишут черным по белому - нет такого свойства, в конструктор registry передается, но нигде в свойствах не запоминается Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Очень интересно. Как всё непросто с этим веб программированием, то ли дело на десктопе, любая библиотека, даже стороннего приложения прилепляется везде по одинаковому. Решение-то какое-нибудь есть? Почему этот же код прекрасно работает и в модулях админки и каталога, а здесь вдруг нет свойсва regisrty? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... chukcha Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 причем здесь вебпрограммирование? 2 часа назад, amfsota сказал: Почему этот же код прекрасно работает и в модулях админки и каталога, Потому что ООП Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Да бог с ним с ООП... Подскажите как профиксить? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... snastik Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 В каком месте вы его хотите получить ? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Правлю файл: /public_html/mymetab.ru/system/library/cart.php (нужно, чтобы расчёт стоимости товара шёл по алгоритмам калькуляторов) Есть своя библиотека: /public_html/mymetab.ru/system/library/calculators.php (здесь собраны методы с разными калькуляторами) Нужно использовать методы из calculators.php в cart.php. А зарегистрировать класс calculators не получается. Версия 2.1.0.1.10. Помогите, пожалуйста. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... snastik Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 Тогда вам не нужен ваш экземпляр класса в глобальном контейнере $registry Вы просто можете его вызвать в нужном месте в классе Cart. С помощью простой конструкции. $this->load->library('calculators/testcalc'); $testcalc = New Testcalc(); И дальше к примеру. $cost = $testcalc->method($cost ); Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 теперь: Notice: Undefined property: Cart::$load in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 172 load насколько я понимаю в версии Pro не работает, там автолодер: Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... chukcha Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 подключите библиотеку в конструкторе public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); //!!!!!!!! $this->load = $registry->get('load'); 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Не работает. Файл /library/calculators.php: <?php class Calculators { private $data = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); } ..... Файл /library/cart.php: class Cart { private $data = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); $this->calculators = $registry->get('calculators'); .... public function getProducts() { .... $calculators= new Calculators(); $calcprice = $calculators->refreshPrice($cart); .... Ошибка: Warning: Missing argument 1 for Calculators::__construct(), called in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 177 and defined in /var/www/u0328033/public_html/mymetab.ru/system/library/calculators.php on line 5Notice: Undefined variable: registry in /var/www/u0328033/public_html/mymetab.ru/system/library/calculators.php on line 6 Fatal error: Call to a member function get() on a non-object in /var/www/u0328033/public_html/mymetab.ru/system/library/calculators.php on line 6 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... chukcha Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 Вы восклицательные знаки видели? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 class Cart { private $data = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); $this->load = $registry->get('load'); //вставил ... $this->load->library('calculators'); $calculators= new Calculators(); ... Опять ошибка: Fatal error: Call to undefined method Loader::library() in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 173 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Как мне посоветовали - так и пробую. Я не понимаю, почему свойство registry в моделях работает, а из системной библиотеки - нет. Блин, задача-то вроде простая - подключить класс. А никак не получается. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... snastik Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 3 минуты назад, nikifalex сказал: ничего не понимаю. Вначале ТС показал себя как нормальный специалист. Вроде. А потом как буд-то подменили и он стал писать $this->load = $registry->get('loa мде.... вы бы версию написали.... если у вас класс уже загрузился автолоадером то просто $calc= new Calc(); если нет: require_once( path_to_lib ); 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Назад 1 2 Вперёд Страница 1 из 2 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 0 Перейти к списку тем Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Поддержка и ответы на вопросы Общие вопросы Создание и доступ к собственной системной библиотеке Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Deals – адаптивный универсальный шаблон Автор: octemplates Динамичесткая инфострока в шапке + позиция в макете для opencart\ocstore 2x, 3x Автор: Lito911 Единицы Измерения Товара Автор: RoS Opencart Product Search by Image Автор: slavoglo Простой массовый редактор цен. Fast Price Edit Автор: Sha × Уже зарегистрированы? Войти Регистрация Раздел покупок Назад Приобретенные дополнения Ваши счета Список желаний Альтернативные контакты Форум Новости ocStore Назад Официальный сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Скачать ocStore Документация История версий ocStore Блоги Модули Шаблоны Назад Бесплатные шаблоны Платные шаблоны Где покупать модули? Услуги FAQ OpenCart.Pro Назад Демо Купить Сравнение × Создать... Важная информация На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности. Я принимаю
amfsota Опубликовано: 22 июля 2017 Автор Поделиться Опубликовано: 22 июля 2017 (изменено) 7 минут назад, Waha сказал: amfsota, Да что там искать, startup.php Прошу прощения за тупость. Не нашёл там явного указания на конкретные файлы. Они регистрируются автоматически? Просто все файлы из директории library? Вот здесь? // Autoloader function library($class) { $file = DIR_SYSTEM . 'library/' . str_replace('\\', '/', strtolower($class)) . '.php'; if (is_file($file)) { include_once(modification($file)); return true; } else { return false; } } Изменено 22 июля 2017 пользователем amfsota Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
amfsota Опубликовано: 23 июля 2017 Автор Поделиться Опубликовано: 23 июля 2017 Ничего не получается с библиотекой. Что делал: 1. Создал контроллер "catalog/controller/calculators/main.php" <?php class ControllerCalculatorsMain extends Controller { public function start() { $this->load->library('calculators/testcalc'); $json = array(); $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } } ?> 2. Создал библиотеку с классом: "system/library/calculators/testcalc.php" <?php class Testcalc { public function calculate($data) { return $data; } } ?> 3. Если в представлении происходит событие ajax-ом делается post запрос в контроллер: function recalc() { msg="quantity="+document.getElementById("input-quantity").value+"&"+($('#calculator').serialize()); $.ajax({ url: 'index.php?route=calculators/main/start', type: 'post', data: msg, dataType: 'json', beforeSend: function() { }, success: function(json) { alert ('SUCCESS'); if (json['error']) { alert (json['error']); } if (json['success']) { document.getElementById("input-quantity").value = json['quantity']; document.getElementById("price").innerHTML = json['total']+' руб.<small> ('+json['price'] + ' р./шт)</small>'; } }, error: function(xhr, ajaxOptions, thrownError) { alert ('ERROR'); } }); } Проверяем. В итоге ошибка 'ERROR' Теперь комментируем эту строку в контроллере : "$this->load->library('calculators/testcalc');" Опять запускаем, всё ОК, сообщение: 'SUCCESS' Вывод - не подключается библиотека. По какой причине понять не могу. Пробовал подключать системные библиотеки - то же самое. Помогите, пожалуйста, уже запарился пробовать разные варианты. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
AlexDW Опубликовано: 23 июля 2017 Поделиться Опубликовано: 23 июля 2017 1 час назад, amfsota сказал: $this->load->library('calculators/testcalc'); 1 час назад, amfsota сказал: class Testcalc { namespace Calculators class Testcalc { Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 23 июля 2017 Автор Поделиться Опубликовано: 23 июля 2017 Спасибо за ссылки, но не получается ничего. Блин что такое, ничего понят не могу??? <?php class ControllerCalculatorsMain extends Controller { public function start() { $this->load->library('cart');//ЗДЕСЬ ОШИБКА!!! Что неправильно, подключаю ведь системную библиотеку. $json = array(); $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } } ?> Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 23 июля 2017 Автор Поделиться Опубликовано: 23 июля 2017 Понятно... https://github.com/opencart/opencart/issues/3469 В opencart.pro 2 сделали автолоудер для всех библиотек, теперь $this->load->library('cart') не работает Чё делать совсем не пойму, ни один пример из инета не работает. А так надо сделать свою библиотеку. Не хочется плодить кучу дублирующегося кода для админки и каталога. Ребята, может кто всё же знает как на новом движке подключать свои библиотеки? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 23 июля 2017 Автор Поделиться Опубликовано: 23 июля 2017 УРАААА!!!!! Целый день бьюсь. $this->registry->set('mylibrary', new Mylibrary($this->registry)); Так заработало, может кому надо будет. Всё, тему можно закрывать. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 25 июля 2017 Автор Поделиться Опубликовано: 25 июля 2017 Я опять тут. с подключением библиотеки из контроллеров и моделей разобрался. Сейчас нарисовалась проблема, как подключить класс из системной библиотеки. конструкция постом выше не работает. Я из системной библиотеки 'cart.php' пытаюсь подключиться к своей таким методом: $this->registry->set('calculators', new Calculators($this->registry)); В итоге получаю ошибку: Notice: Undefined property: Cart::$registry in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 39 Fatal error: Call to a member function set() on a non-object in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 39 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... chukcha Опубликовано: 25 июля 2017 Поделиться Опубликовано: 25 июля 2017 так вам же пишут черным по белому - нет такого свойства, в конструктор registry передается, но нигде в свойствах не запоминается Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Очень интересно. Как всё непросто с этим веб программированием, то ли дело на десктопе, любая библиотека, даже стороннего приложения прилепляется везде по одинаковому. Решение-то какое-нибудь есть? Почему этот же код прекрасно работает и в модулях админки и каталога, а здесь вдруг нет свойсва regisrty? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... chukcha Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 причем здесь вебпрограммирование? 2 часа назад, amfsota сказал: Почему этот же код прекрасно работает и в модулях админки и каталога, Потому что ООП Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Да бог с ним с ООП... Подскажите как профиксить? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... snastik Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 В каком месте вы его хотите получить ? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Правлю файл: /public_html/mymetab.ru/system/library/cart.php (нужно, чтобы расчёт стоимости товара шёл по алгоритмам калькуляторов) Есть своя библиотека: /public_html/mymetab.ru/system/library/calculators.php (здесь собраны методы с разными калькуляторами) Нужно использовать методы из calculators.php в cart.php. А зарегистрировать класс calculators не получается. Версия 2.1.0.1.10. Помогите, пожалуйста. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... snastik Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 Тогда вам не нужен ваш экземпляр класса в глобальном контейнере $registry Вы просто можете его вызвать в нужном месте в классе Cart. С помощью простой конструкции. $this->load->library('calculators/testcalc'); $testcalc = New Testcalc(); И дальше к примеру. $cost = $testcalc->method($cost ); Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 теперь: Notice: Undefined property: Cart::$load in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 172 load насколько я понимаю в версии Pro не работает, там автолодер: Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... chukcha Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 подключите библиотеку в конструкторе public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); //!!!!!!!! $this->load = $registry->get('load'); 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Не работает. Файл /library/calculators.php: <?php class Calculators { private $data = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); } ..... Файл /library/cart.php: class Cart { private $data = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); $this->calculators = $registry->get('calculators'); .... public function getProducts() { .... $calculators= new Calculators(); $calcprice = $calculators->refreshPrice($cart); .... Ошибка: Warning: Missing argument 1 for Calculators::__construct(), called in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 177 and defined in /var/www/u0328033/public_html/mymetab.ru/system/library/calculators.php on line 5Notice: Undefined variable: registry in /var/www/u0328033/public_html/mymetab.ru/system/library/calculators.php on line 6 Fatal error: Call to a member function get() on a non-object in /var/www/u0328033/public_html/mymetab.ru/system/library/calculators.php on line 6 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... chukcha Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 Вы восклицательные знаки видели? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 class Cart { private $data = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); $this->load = $registry->get('load'); //вставил ... $this->load->library('calculators'); $calculators= new Calculators(); ... Опять ошибка: Fatal error: Call to undefined method Loader::library() in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 173 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Как мне посоветовали - так и пробую. Я не понимаю, почему свойство registry в моделях работает, а из системной библиотеки - нет. Блин, задача-то вроде простая - подключить класс. А никак не получается. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... snastik Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 3 минуты назад, nikifalex сказал: ничего не понимаю. Вначале ТС показал себя как нормальный специалист. Вроде. А потом как буд-то подменили и он стал писать $this->load = $registry->get('loa мде.... вы бы версию написали.... если у вас класс уже загрузился автолоадером то просто $calc= new Calc(); если нет: require_once( path_to_lib ); 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Назад 1 2 Вперёд Страница 1 из 2 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 0 Перейти к списку тем Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Поддержка и ответы на вопросы Общие вопросы Создание и доступ к собственной системной библиотеке Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Deals – адаптивный универсальный шаблон Автор: octemplates Динамичесткая инфострока в шапке + позиция в макете для opencart\ocstore 2x, 3x Автор: Lito911 Единицы Измерения Товара Автор: RoS Opencart Product Search by Image Автор: slavoglo Простой массовый редактор цен. Fast Price Edit Автор: Sha × Уже зарегистрированы? Войти Регистрация Раздел покупок Назад Приобретенные дополнения Ваши счета Список желаний Альтернативные контакты Форум Новости ocStore Назад Официальный сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Скачать ocStore Документация История версий ocStore Блоги Модули Шаблоны Назад Бесплатные шаблоны Платные шаблоны Где покупать модули? Услуги FAQ OpenCart.Pro Назад Демо Купить Сравнение × Создать... Важная информация На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности. Я принимаю
amfsota Опубликовано: 23 июля 2017 Автор Поделиться Опубликовано: 23 июля 2017 Спасибо за ссылки, но не получается ничего. Блин что такое, ничего понят не могу??? <?php class ControllerCalculatorsMain extends Controller { public function start() { $this->load->library('cart');//ЗДЕСЬ ОШИБКА!!! Что неправильно, подключаю ведь системную библиотеку. $json = array(); $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } } ?> Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
amfsota Опубликовано: 23 июля 2017 Автор Поделиться Опубликовано: 23 июля 2017 Понятно... https://github.com/opencart/opencart/issues/3469 В opencart.pro 2 сделали автолоудер для всех библиотек, теперь $this->load->library('cart') не работает Чё делать совсем не пойму, ни один пример из инета не работает. А так надо сделать свою библиотеку. Не хочется плодить кучу дублирующегося кода для админки и каталога. Ребята, может кто всё же знает как на новом движке подключать свои библиотеки? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
amfsota Опубликовано: 23 июля 2017 Автор Поделиться Опубликовано: 23 июля 2017 УРАААА!!!!! Целый день бьюсь. $this->registry->set('mylibrary', new Mylibrary($this->registry)); Так заработало, может кому надо будет. Всё, тему можно закрывать. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
amfsota Опубликовано: 25 июля 2017 Автор Поделиться Опубликовано: 25 июля 2017 Я опять тут. с подключением библиотеки из контроллеров и моделей разобрался. Сейчас нарисовалась проблема, как подключить класс из системной библиотеки. конструкция постом выше не работает. Я из системной библиотеки 'cart.php' пытаюсь подключиться к своей таким методом: $this->registry->set('calculators', new Calculators($this->registry)); В итоге получаю ошибку: Notice: Undefined property: Cart::$registry in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 39 Fatal error: Call to a member function set() on a non-object in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 39 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
chukcha Опубликовано: 25 июля 2017 Поделиться Опубликовано: 25 июля 2017 так вам же пишут черным по белому - нет такого свойства, в конструктор registry передается, но нигде в свойствах не запоминается Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Очень интересно. Как всё непросто с этим веб программированием, то ли дело на десктопе, любая библиотека, даже стороннего приложения прилепляется везде по одинаковому. Решение-то какое-нибудь есть? Почему этот же код прекрасно работает и в модулях админки и каталога, а здесь вдруг нет свойсва regisrty? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... chukcha Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 причем здесь вебпрограммирование? 2 часа назад, amfsota сказал: Почему этот же код прекрасно работает и в модулях админки и каталога, Потому что ООП Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Да бог с ним с ООП... Подскажите как профиксить? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... snastik Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 В каком месте вы его хотите получить ? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Правлю файл: /public_html/mymetab.ru/system/library/cart.php (нужно, чтобы расчёт стоимости товара шёл по алгоритмам калькуляторов) Есть своя библиотека: /public_html/mymetab.ru/system/library/calculators.php (здесь собраны методы с разными калькуляторами) Нужно использовать методы из calculators.php в cart.php. А зарегистрировать класс calculators не получается. Версия 2.1.0.1.10. Помогите, пожалуйста. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... snastik Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 Тогда вам не нужен ваш экземпляр класса в глобальном контейнере $registry Вы просто можете его вызвать в нужном месте в классе Cart. С помощью простой конструкции. $this->load->library('calculators/testcalc'); $testcalc = New Testcalc(); И дальше к примеру. $cost = $testcalc->method($cost ); Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 теперь: Notice: Undefined property: Cart::$load in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 172 load насколько я понимаю в версии Pro не работает, там автолодер: Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... chukcha Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 подключите библиотеку в конструкторе public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); //!!!!!!!! $this->load = $registry->get('load'); 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Не работает. Файл /library/calculators.php: <?php class Calculators { private $data = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); } ..... Файл /library/cart.php: class Cart { private $data = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); $this->calculators = $registry->get('calculators'); .... public function getProducts() { .... $calculators= new Calculators(); $calcprice = $calculators->refreshPrice($cart); .... Ошибка: Warning: Missing argument 1 for Calculators::__construct(), called in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 177 and defined in /var/www/u0328033/public_html/mymetab.ru/system/library/calculators.php on line 5Notice: Undefined variable: registry in /var/www/u0328033/public_html/mymetab.ru/system/library/calculators.php on line 6 Fatal error: Call to a member function get() on a non-object in /var/www/u0328033/public_html/mymetab.ru/system/library/calculators.php on line 6 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... chukcha Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 Вы восклицательные знаки видели? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 class Cart { private $data = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); $this->load = $registry->get('load'); //вставил ... $this->load->library('calculators'); $calculators= new Calculators(); ... Опять ошибка: Fatal error: Call to undefined method Loader::library() in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 173 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Как мне посоветовали - так и пробую. Я не понимаю, почему свойство registry в моделях работает, а из системной библиотеки - нет. Блин, задача-то вроде простая - подключить класс. А никак не получается. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... snastik Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 3 минуты назад, nikifalex сказал: ничего не понимаю. Вначале ТС показал себя как нормальный специалист. Вроде. А потом как буд-то подменили и он стал писать $this->load = $registry->get('loa мде.... вы бы версию написали.... если у вас класс уже загрузился автолоадером то просто $calc= new Calc(); если нет: require_once( path_to_lib ); 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Назад 1 2 Вперёд Страница 1 из 2 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 0 Перейти к списку тем Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Поддержка и ответы на вопросы Общие вопросы Создание и доступ к собственной системной библиотеке Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Deals – адаптивный универсальный шаблон Автор: octemplates Динамичесткая инфострока в шапке + позиция в макете для opencart\ocstore 2x, 3x Автор: Lito911 Единицы Измерения Товара Автор: RoS Opencart Product Search by Image Автор: slavoglo Простой массовый редактор цен. Fast Price Edit Автор: Sha × Уже зарегистрированы? Войти Регистрация Раздел покупок Назад Приобретенные дополнения Ваши счета Список желаний Альтернативные контакты Форум Новости ocStore Назад Официальный сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Скачать ocStore Документация История версий ocStore Блоги Модули Шаблоны Назад Бесплатные шаблоны Платные шаблоны Где покупать модули? Услуги FAQ OpenCart.Pro Назад Демо Купить Сравнение × Создать... Важная информация На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности. Я принимаю
amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Очень интересно. Как всё непросто с этим веб программированием, то ли дело на десктопе, любая библиотека, даже стороннего приложения прилепляется везде по одинаковому. Решение-то какое-нибудь есть? Почему этот же код прекрасно работает и в модулях админки и каталога, а здесь вдруг нет свойсва regisrty? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
chukcha Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 причем здесь вебпрограммирование? 2 часа назад, amfsota сказал: Почему этот же код прекрасно работает и в модулях админки и каталога, Потому что ООП Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Да бог с ним с ООП... Подскажите как профиксить? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... snastik Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 В каком месте вы его хотите получить ? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Правлю файл: /public_html/mymetab.ru/system/library/cart.php (нужно, чтобы расчёт стоимости товара шёл по алгоритмам калькуляторов) Есть своя библиотека: /public_html/mymetab.ru/system/library/calculators.php (здесь собраны методы с разными калькуляторами) Нужно использовать методы из calculators.php в cart.php. А зарегистрировать класс calculators не получается. Версия 2.1.0.1.10. Помогите, пожалуйста. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... snastik Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 Тогда вам не нужен ваш экземпляр класса в глобальном контейнере $registry Вы просто можете его вызвать в нужном месте в классе Cart. С помощью простой конструкции. $this->load->library('calculators/testcalc'); $testcalc = New Testcalc(); И дальше к примеру. $cost = $testcalc->method($cost ); Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 теперь: Notice: Undefined property: Cart::$load in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 172 load насколько я понимаю в версии Pro не работает, там автолодер: Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... chukcha Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 подключите библиотеку в конструкторе public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); //!!!!!!!! $this->load = $registry->get('load'); 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Не работает. Файл /library/calculators.php: <?php class Calculators { private $data = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); } ..... Файл /library/cart.php: class Cart { private $data = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); $this->calculators = $registry->get('calculators'); .... public function getProducts() { .... $calculators= new Calculators(); $calcprice = $calculators->refreshPrice($cart); .... Ошибка: Warning: Missing argument 1 for Calculators::__construct(), called in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 177 and defined in /var/www/u0328033/public_html/mymetab.ru/system/library/calculators.php on line 5Notice: Undefined variable: registry in /var/www/u0328033/public_html/mymetab.ru/system/library/calculators.php on line 6 Fatal error: Call to a member function get() on a non-object in /var/www/u0328033/public_html/mymetab.ru/system/library/calculators.php on line 6 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... chukcha Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 Вы восклицательные знаки видели? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 class Cart { private $data = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); $this->load = $registry->get('load'); //вставил ... $this->load->library('calculators'); $calculators= new Calculators(); ... Опять ошибка: Fatal error: Call to undefined method Loader::library() in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 173 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Как мне посоветовали - так и пробую. Я не понимаю, почему свойство registry в моделях работает, а из системной библиотеки - нет. Блин, задача-то вроде простая - подключить класс. А никак не получается. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... snastik Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 3 минуты назад, nikifalex сказал: ничего не понимаю. Вначале ТС показал себя как нормальный специалист. Вроде. А потом как буд-то подменили и он стал писать $this->load = $registry->get('loa мде.... вы бы версию написали.... если у вас класс уже загрузился автолоадером то просто $calc= new Calc(); если нет: require_once( path_to_lib ); 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Назад 1 2 Вперёд Страница 1 из 2 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 0 Перейти к списку тем Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Поддержка и ответы на вопросы Общие вопросы Создание и доступ к собственной системной библиотеке Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Deals – адаптивный универсальный шаблон Автор: octemplates Динамичесткая инфострока в шапке + позиция в макете для opencart\ocstore 2x, 3x Автор: Lito911 Единицы Измерения Товара Автор: RoS Opencart Product Search by Image Автор: slavoglo Простой массовый редактор цен. Fast Price Edit Автор: Sha × Уже зарегистрированы? Войти Регистрация Раздел покупок Назад Приобретенные дополнения Ваши счета Список желаний Альтернативные контакты Форум Новости ocStore Назад Официальный сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Скачать ocStore Документация История версий ocStore Блоги Модули Шаблоны Назад Бесплатные шаблоны Платные шаблоны Где покупать модули? Услуги FAQ OpenCart.Pro Назад Демо Купить Сравнение × Создать... Важная информация На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности. Я принимаю
amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Да бог с ним с ООП... Подскажите как профиксить? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
snastik Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 В каком месте вы его хотите получить ? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Правлю файл: /public_html/mymetab.ru/system/library/cart.php (нужно, чтобы расчёт стоимости товара шёл по алгоритмам калькуляторов) Есть своя библиотека: /public_html/mymetab.ru/system/library/calculators.php (здесь собраны методы с разными калькуляторами) Нужно использовать методы из calculators.php в cart.php. А зарегистрировать класс calculators не получается. Версия 2.1.0.1.10. Помогите, пожалуйста. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... snastik Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 Тогда вам не нужен ваш экземпляр класса в глобальном контейнере $registry Вы просто можете его вызвать в нужном месте в классе Cart. С помощью простой конструкции. $this->load->library('calculators/testcalc'); $testcalc = New Testcalc(); И дальше к примеру. $cost = $testcalc->method($cost ); Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 теперь: Notice: Undefined property: Cart::$load in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 172 load насколько я понимаю в версии Pro не работает, там автолодер: Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... chukcha Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 подключите библиотеку в конструкторе public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); //!!!!!!!! $this->load = $registry->get('load'); 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Не работает. Файл /library/calculators.php: <?php class Calculators { private $data = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); } ..... Файл /library/cart.php: class Cart { private $data = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); $this->calculators = $registry->get('calculators'); .... public function getProducts() { .... $calculators= new Calculators(); $calcprice = $calculators->refreshPrice($cart); .... Ошибка: Warning: Missing argument 1 for Calculators::__construct(), called in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 177 and defined in /var/www/u0328033/public_html/mymetab.ru/system/library/calculators.php on line 5Notice: Undefined variable: registry in /var/www/u0328033/public_html/mymetab.ru/system/library/calculators.php on line 6 Fatal error: Call to a member function get() on a non-object in /var/www/u0328033/public_html/mymetab.ru/system/library/calculators.php on line 6 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... chukcha Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 Вы восклицательные знаки видели? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 class Cart { private $data = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); $this->load = $registry->get('load'); //вставил ... $this->load->library('calculators'); $calculators= new Calculators(); ... Опять ошибка: Fatal error: Call to undefined method Loader::library() in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 173 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Как мне посоветовали - так и пробую. Я не понимаю, почему свойство registry в моделях работает, а из системной библиотеки - нет. Блин, задача-то вроде простая - подключить класс. А никак не получается. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... snastik Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 3 минуты назад, nikifalex сказал: ничего не понимаю. Вначале ТС показал себя как нормальный специалист. Вроде. А потом как буд-то подменили и он стал писать $this->load = $registry->get('loa мде.... вы бы версию написали.... если у вас класс уже загрузился автолоадером то просто $calc= new Calc(); если нет: require_once( path_to_lib ); 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Назад 1 2 Вперёд Страница 1 из 2 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 0 Перейти к списку тем Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Поддержка и ответы на вопросы Общие вопросы Создание и доступ к собственной системной библиотеке Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Deals – адаптивный универсальный шаблон Автор: octemplates Динамичесткая инфострока в шапке + позиция в макете для opencart\ocstore 2x, 3x Автор: Lito911 Единицы Измерения Товара Автор: RoS Opencart Product Search by Image Автор: slavoglo Простой массовый редактор цен. Fast Price Edit Автор: Sha × Уже зарегистрированы? Войти Регистрация Раздел покупок Назад Приобретенные дополнения Ваши счета Список желаний Альтернативные контакты Форум Новости ocStore Назад Официальный сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Скачать ocStore Документация История версий ocStore Блоги Модули Шаблоны Назад Бесплатные шаблоны Платные шаблоны Где покупать модули? Услуги FAQ OpenCart.Pro Назад Демо Купить Сравнение × Создать... Важная информация На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности. Я принимаю
amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Правлю файл: /public_html/mymetab.ru/system/library/cart.php (нужно, чтобы расчёт стоимости товара шёл по алгоритмам калькуляторов) Есть своя библиотека: /public_html/mymetab.ru/system/library/calculators.php (здесь собраны методы с разными калькуляторами) Нужно использовать методы из calculators.php в cart.php. А зарегистрировать класс calculators не получается. Версия 2.1.0.1.10. Помогите, пожалуйста. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
snastik Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 Тогда вам не нужен ваш экземпляр класса в глобальном контейнере $registry Вы просто можете его вызвать в нужном месте в классе Cart. С помощью простой конструкции. $this->load->library('calculators/testcalc'); $testcalc = New Testcalc(); И дальше к примеру. $cost = $testcalc->method($cost ); Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 теперь: Notice: Undefined property: Cart::$load in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 172 load насколько я понимаю в версии Pro не работает, там автолодер: Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... chukcha Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 подключите библиотеку в конструкторе public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); //!!!!!!!! $this->load = $registry->get('load'); 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Не работает. Файл /library/calculators.php: <?php class Calculators { private $data = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); } ..... Файл /library/cart.php: class Cart { private $data = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); $this->calculators = $registry->get('calculators'); .... public function getProducts() { .... $calculators= new Calculators(); $calcprice = $calculators->refreshPrice($cart); .... Ошибка: Warning: Missing argument 1 for Calculators::__construct(), called in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 177 and defined in /var/www/u0328033/public_html/mymetab.ru/system/library/calculators.php on line 5Notice: Undefined variable: registry in /var/www/u0328033/public_html/mymetab.ru/system/library/calculators.php on line 6 Fatal error: Call to a member function get() on a non-object in /var/www/u0328033/public_html/mymetab.ru/system/library/calculators.php on line 6 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... chukcha Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 Вы восклицательные знаки видели? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 class Cart { private $data = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); $this->load = $registry->get('load'); //вставил ... $this->load->library('calculators'); $calculators= new Calculators(); ... Опять ошибка: Fatal error: Call to undefined method Loader::library() in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 173 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Как мне посоветовали - так и пробую. Я не понимаю, почему свойство registry в моделях работает, а из системной библиотеки - нет. Блин, задача-то вроде простая - подключить класс. А никак не получается. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... snastik Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 3 минуты назад, nikifalex сказал: ничего не понимаю. Вначале ТС показал себя как нормальный специалист. Вроде. А потом как буд-то подменили и он стал писать $this->load = $registry->get('loa мде.... вы бы версию написали.... если у вас класс уже загрузился автолоадером то просто $calc= new Calc(); если нет: require_once( path_to_lib ); 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Назад 1 2 Вперёд Страница 1 из 2 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 0 Перейти к списку тем Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Поддержка и ответы на вопросы Общие вопросы Создание и доступ к собственной системной библиотеке Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Deals – адаптивный универсальный шаблон Автор: octemplates Динамичесткая инфострока в шапке + позиция в макете для opencart\ocstore 2x, 3x Автор: Lito911 Единицы Измерения Товара Автор: RoS Opencart Product Search by Image Автор: slavoglo Простой массовый редактор цен. Fast Price Edit Автор: Sha
amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 теперь: Notice: Undefined property: Cart::$load in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 172 load насколько я понимаю в версии Pro не работает, там автолодер: Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
chukcha Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 подключите библиотеку в конструкторе public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); //!!!!!!!! $this->load = $registry->get('load'); 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Не работает. Файл /library/calculators.php: <?php class Calculators { private $data = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); } ..... Файл /library/cart.php: class Cart { private $data = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); $this->calculators = $registry->get('calculators'); .... public function getProducts() { .... $calculators= new Calculators(); $calcprice = $calculators->refreshPrice($cart); .... Ошибка: Warning: Missing argument 1 for Calculators::__construct(), called in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 177 and defined in /var/www/u0328033/public_html/mymetab.ru/system/library/calculators.php on line 5Notice: Undefined variable: registry in /var/www/u0328033/public_html/mymetab.ru/system/library/calculators.php on line 6 Fatal error: Call to a member function get() on a non-object in /var/www/u0328033/public_html/mymetab.ru/system/library/calculators.php on line 6 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... chukcha Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 Вы восклицательные знаки видели? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 class Cart { private $data = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); $this->load = $registry->get('load'); //вставил ... $this->load->library('calculators'); $calculators= new Calculators(); ... Опять ошибка: Fatal error: Call to undefined method Loader::library() in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 173 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Как мне посоветовали - так и пробую. Я не понимаю, почему свойство registry в моделях работает, а из системной библиотеки - нет. Блин, задача-то вроде простая - подключить класс. А никак не получается. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... snastik Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 3 минуты назад, nikifalex сказал: ничего не понимаю. Вначале ТС показал себя как нормальный специалист. Вроде. А потом как буд-то подменили и он стал писать $this->load = $registry->get('loa мде.... вы бы версию написали.... если у вас класс уже загрузился автолоадером то просто $calc= new Calc(); если нет: require_once( path_to_lib ); 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Назад 1 2 Вперёд Страница 1 из 2 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 0 Перейти к списку тем Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Поддержка и ответы на вопросы Общие вопросы Создание и доступ к собственной системной библиотеке
amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Не работает. Файл /library/calculators.php: <?php class Calculators { private $data = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); } ..... Файл /library/cart.php: class Cart { private $data = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); $this->calculators = $registry->get('calculators'); .... public function getProducts() { .... $calculators= new Calculators(); $calcprice = $calculators->refreshPrice($cart); .... Ошибка: Warning: Missing argument 1 for Calculators::__construct(), called in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 177 and defined in /var/www/u0328033/public_html/mymetab.ru/system/library/calculators.php on line 5Notice: Undefined variable: registry in /var/www/u0328033/public_html/mymetab.ru/system/library/calculators.php on line 6 Fatal error: Call to a member function get() on a non-object in /var/www/u0328033/public_html/mymetab.ru/system/library/calculators.php on line 6 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
chukcha Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 Вы восклицательные знаки видели? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 class Cart { private $data = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); $this->load = $registry->get('load'); //вставил ... $this->load->library('calculators'); $calculators= new Calculators(); ... Опять ошибка: Fatal error: Call to undefined method Loader::library() in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 173 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Как мне посоветовали - так и пробую. Я не понимаю, почему свойство registry в моделях работает, а из системной библиотеки - нет. Блин, задача-то вроде простая - подключить класс. А никак не получается. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... snastik Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 3 минуты назад, nikifalex сказал: ничего не понимаю. Вначале ТС показал себя как нормальный специалист. Вроде. А потом как буд-то подменили и он стал писать $this->load = $registry->get('loa мде.... вы бы версию написали.... если у вас класс уже загрузился автолоадером то просто $calc= new Calc(); если нет: require_once( path_to_lib ); 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Назад 1 2 Вперёд Страница 1 из 2 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 0 Перейти к списку тем Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу.
amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 class Cart { private $data = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->customer = $registry->get('customer'); $this->session = $registry->get('session'); $this->db = $registry->get('db'); $this->tax = $registry->get('tax'); $this->weight = $registry->get('weight'); $this->load = $registry->get('load'); //вставил ... $this->load->library('calculators'); $calculators= new Calculators(); ... Опять ошибка: Fatal error: Call to undefined method Loader::library() in /var/www/u0328033/public_html/mymetab.ru/system/library/cart.php on line 173 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
amfsota Опубликовано: 26 июля 2017 Автор Поделиться Опубликовано: 26 июля 2017 Как мне посоветовали - так и пробую. Я не понимаю, почему свойство registry в моделях работает, а из системной библиотеки - нет. Блин, задача-то вроде простая - подключить класс. А никак не получается. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
snastik Опубликовано: 26 июля 2017 Поделиться Опубликовано: 26 июля 2017 3 минуты назад, nikifalex сказал: ничего не понимаю. Вначале ТС показал себя как нормальный специалист. Вроде. А потом как буд-то подменили и он стал писать $this->load = $registry->get('loa мде.... вы бы версию написали.... если у вас класс уже загрузился автолоадером то просто $calc= new Calc(); если нет: require_once( path_to_lib ); 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Назад 1 2 Вперёд Страница 1 из 2 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 0
Рекомендованные сообщения