Search the Community
Showing results for tags 'контроллер'.
-
Здравствуйте, создавая свой контроллер, подключил загрузил в него уже существующий в подключенном контроллере есть переменная как теперь мне получить значение переменной $data['test']?
- 2 replies
-
- controller
- контроллер
-
(and 2 more)
Tagged with:
-
Доброго времени суток. Есть задача: Необходимо настроить в админ панели выбор картинки для слайдера. Слайдер - отдельный модуль. Код контроллера admin/controller/module/slider.php: <?php class ControllerModuleSlider extends Controller { private $error = array(); // используется для установки ошибки, если такая возникла public function index() { $this->load->language('module/slider'); //подключаем языковой файл $this->document->setTitle($this->language->get('heading_title')); $this->load->model('setting/setting'); //подключаем модель setting, он позволяет сохранять настройки модуля в БД if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { // если мы нажали "Сохранить" в панели, мы сохраняем текущие настройки $this->model_setting_setting->editSetting('slider', $this->request->post); // анализ и передача данных в Setting Model для сохранения в базе данных $this->response->redirect($this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL')); // редирект в Module Listing } // объявление переменных // формирование breadcrumbs // обработка ошибок из validate() // статус модуля // обработка текстовых полей // тут работа с изображением (пока что пробую сделать это с одним изображением) $this->load->model('tool/image'); if (isset($this->request->post['config_image1'])) { $data['config_image1'] = $this->request->post['config_image1']; } else { $data['config_image1'] = $this->config->get('config_image1'); } if (isset($this->request->post['config_image1']) && is_file(DIR_IMAGE . $this->request->post['config_image1'])) { $data['thumb1'] = $this->model_tool_image->resize($this->request->post['config_image1'], 100, 100); } elseif ($this->config->get('config_image1') && is_file(DIR_IMAGE . $this->config->get('config_image1'))) { $data['thumb1'] = $this->model_tool_image->resize($this->config->get('config_image1'), 100, 100); } else { $data['thumb1'] = $this->model_tool_image->resize('no_image.png', 100, 100); } $data['placeholder'] = $this->model_tool_image->resize('no_image.png', 100, 100); // далее завершающая часть (setOutput ) } protected function validate() { // проверка прав доступа пользователя для работы с модулем if (!$this->user->hasPermission('modify', 'module/category')) { $this->error['warning'] = $this->language->get('error_permission'); } // проверка заданы ли текстовые поля if (!$this->request->post['config_image1']) { $this->error['code'] = $this->language->get('error_code'); } return !$this->error; } } Кусок кода представления admin/view/template/module/slider.tpl: <div class="form-group"> <label class="col-sm-2 control-label" for="input-image"><?php echo $entry_image; ?></label> <div class="col-sm-10"><a href="" id="thumb-image" data-toggle="image" class="img-thumbnail"><img src="<?php echo $thumb1; ?>" alt="" title="" data-placeholder="<?php echo $placeholder; ?>" /></a> <input type="hidden" name="config_image1" value="<?php echo $config_image1; ?>" id="input-image" /> </div> </div> Кусок кода catalog/controller/module/slider.php: <?php class ControllerModuleSlider extends Controller { public function index() { $this->load->language('module/slider'); //подключаем любой языковой файл $data['heading_title'] = $this->language->get('heading_title'); //объявляем переменную heading_title с данными из языкового файла $data['slider_slide1_span'] = $this->config->get('slider_slide1_span'); $data['slider_slide2_span'] = $this->config->get('slider_slide2_span'); $data['slider_slide3_span'] = $this->config->get('slider_slide3_span'); $data['slider_slide4_span'] = $this->config->get('slider_slide4_span'); $data['slider_slide1_bold'] = $this->config->get('slider_slide1_bold'); $data['slider_slide2_bold'] = $this->config->get('slider_slide2_bold'); $data['slider_slide3_bold'] = $this->config->get('slider_slide3_bold'); $data['slider_slide4_bold'] = $this->config->get('slider_slide4_bold'); $data['config_image1'] = $this->config->get('config_image1'); //стандартная процедура для контроллеров OpenCart, выбираем файл представления модуля для вывода данных if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/slider.tpl')) { return $this->load->view($this->config->get('config_template') . '/template/module/slider.tpl', $data); } } }?> Кусок кода catalog/view/template/module/slider.tpl: <div class="main_title slide" > <img src="<?php echo $config_image1; ?>" alt="<?php echo $slider_slide1_span . ' ' . $slider_slide1_bold; ?>"> <div class="container--small"> <div class="title_text"> <span><?php echo $slider_slide1_span; ?></span> <h1><?php echo $slider_slide1_bold; ?></h1> </div> </div> </div> Проблема в том, что в представление catalog/view/module/slider.tpl $config_image1 передаётся как (unknown). Есть мысли, что это из-за модификации имён переменных, т.к. они участвуют в AJAX запросах. Подскажите, пожалуйста, почему приходит (unknown)? Не использую модель, т. к. с текстовыми полями это работает и по аналогии (из setting.php) пытаюсь сделать с картинкой.
-
Как в /catalog/model/extension/total/shipping.php обратиться к продуктам в корзине? K $this->cart->getProducts(). Opencart 2.3
- 4 replies
-
- модели
- контроллер
-
(and 1 more)
Tagged with:
-
Добрый день. У меня в классе продукта есть метод кототрый импортирует нужные товары, записей много и постоянно выскакивает ошибка таймаута. Решено запускать скрипт через консоль по ssh. Подскажите как в таком случае вызвать нужный контролер и в нем метод? Кто занимался подобным?
- 6 replies
-
- консоль
- контроллер
-
(and 1 more)
Tagged with:
-
Здравствуйте составил вот такой запрос к базе данных (необходимо иметь возможность быстро редактировать сумму заказа из формы заказа): $tsum = $this->db->query("SELECT total FROM oc_order WHERE order_id=414"); Как подставить в него id мне более менее понятно, сама база с запроса возвращает правильные данные. Вопрос - правильно ли я сделал запрос, так как шаблон переменную не возвращает. Пишет Undefined variable , как ее сделать правильно? И вообще можно ли лезть в базу данных с контроллера, или только в модели?
- 1 reply
-
- sql запрос
- контроллер
-
(and 1 more)
Tagged with:
-
Нужно прописать и вывести в админку новую переменную, конкретно в форме изменения заказа (версия 2.3) Вроде бы все просто, берем контроллер /admin/controller/sale/order.php и пишем в нем к примеру data['переменная'] = $this-> 'значение'; после public function getForm() { Далее пишем в файле шаблона <?php echo $переменная; ?> и дело сделано, переменная обозначена. Но я видимо делаю что то не так, так как вижу Notice: Undefined variable. Что я делаю не так и как это сделать правильно?
-
Мне нужно изменить личный кабинет(создать контроллер и т.д.), но точно не знаю где находится папка отвечающая за страницу личный кабинет. Собственно задание: Доработать личный кабинет, чтобы зарег. пользователи могли писать новости, также добавить в меню в ЛК - ссылку на все новости пользователя и добавление новости. Также сделать отдельную стр. для всех новостей, всех пользователей и вывести в шапку сайта - ссылку на данную стр.
-
Здравствуйте. Помогите, пожалуйста, советом. Версия Opencart 2.1.0.2 Суть вопроса: В каждой категории в левом меню выводим ссылку на информационную страницу (представление: catalog/view.../information/information.tpl контроллер: catalog/controller/information/information.php). Содержимое информационной страницы - динамическое. В частности, содержит вывод определённой строки, в зависимости от названия категории, с которой мы перешли на эту страницу. Создал в контроллере категорий методы, переменную и присваивание ей значений. Заходим в категорию - значение переменной генерируется правильно (проверил выводом переменной в category.tpl Как мне передать значение этой категории в контроллер information.php для вывода в представлении information.tpl? Можно ли эту переменную сделать "глобальной" ("сквозной")? И, главное, как? Рассматривал: 1. Передачу методом post при клике по ссылке 2. Добавить ручками таблицу в базу данных, отредактировать модель категории и информации, чтобы при открытии категории значение писалось в таблицу, а при открытии информационной страницы вытягивать его из базы. 3. Использовать сессии? Есть простое решение? Спасибо.
- 6 replies
-
- переменная
- передача
-
(and 1 more)
Tagged with:
-
Добрый день. Начинаю изучать opencart и столкнулся с такой проблемой. Мне нужно сделать выгрузку всех товаров в csv файл. Решил реализовать так - сделал модуль админки в которой по отправке формы перебираются все товары и информация о них записывается в фид. Но для получения ссылки на товар используя вот этот метод $this->url->link('product/product', '&product_id=' . $product['product_id']) получаю ссылку на товар в админке. Я так понимаю потому что в данном случае $this это экземпляр контроллера админки и метод url->link логично выдает такой урл. Но мне нужно получить урл на витринный товар. Подскажите можно ли из админки получить такую ссылку или возможно правильней будет делать как-то по другому. Есть мысли что можно сделать еще модуль для витрины и там получать все данные, но мне кажется что это не правильно так как модуль рассчитан только для администраторов и страницы на витрине у него не должно быть. Буду очень благодарен за любой совет. (п.с. Opencart 2.2.0)
- 2 replies
-
- opencart
- контроллер
-
(and 4 more)
Tagged with:
-
Всем привет! Вопрос, необходимо изменять текст в корзине, в зависимости от того, на какой категории находится пользователь. То есть в шаблоне корзины хочу вывести примерно следующее: <?php if ($category_id == 95){ ?> <h2>Корзина 1</h2> <?php }elseif ($category_id == 108){ ?> <h2 class="title">Корзина 2</h2> <?php } ?> Проблема в том, как определить переменную category_id в контроллере? Пробую так в cart.php: $category_info = $this->model_catalog_category->getCategory($category_id); $data['categories'] = array(); $data['category_id'] = $category_id; $results = $this->model_catalog_category->getCategories($category_id); Но не работает. Подскажите пожалуйста, кто знает?
- 4 replies
-
- корзина
- выод категорий
-
(and 1 more)
Tagged with:
-
Здравствуйте уважаемые программисты, у меня возникла интересная ситуация, решил добавить в footer.tpl вывод логотипа сайта, но выходит ошибка типа Notice: Undefined variable: logo in/home/m/mirzvuka/public_html/catalog/view/theme/coloring/template/common/footer.tplon line 27 в самом footer.tpl ввел <?php echo $logo;?> в чем проблема может быть ?
-
Пытаюсь в Opencart ocStore 2.1.0.2 в /catalog/controller/product/category.php внести правки, после чего заглядываю в категории магазина и не вижу своих изменений, думаю для теста удалить все содержимое файла, удаляю, обновляю, страница абсолютно без изменений (хотя /catalog/controller/product/category.php пустой), пробую дальше, переименовую файл category.php и обновляюсь - выдает ошибку. То есть получается, при пустом файле category.php у нас все хорошо работает. Вопрос, с чем это связано? И как мне все таки увидеть свои правки?
- 1 reply
-
- category.php
- контроллер
-
(and 1 more)
Tagged with:
-
Доброго времени суток уважаемые гуру форума! Заранее всем спасибо за внимание к моей проблеме. Описание: долго грузится категория (пациент: klukva-shop.ru/lico или любая другая категория), category.php что-то там такое исполняет секунд 5-10 и только потом начинает отдавать контент браузеру. Главная грузится быстро. Методом тыка понял что это controller/product/category.php. Файл прилагаетсяcategory.php Выставил $product_total = 0; не помогает Вопросы: 1. Правильно ли я грешу на контроллер category.php? 2. Если правильно что делать или хотябы куда смотреть?? P.S. У меня подозрение что он тупо вместо отдачи статичной страницы с линками на подкатегории еще и выполняет какие-то тяжелые задачи вроде формирование списков товаров при этом их не показывая...
- 6 replies
-
- category.php
- категория
-
(and 3 more)
Tagged with:
-
Здравствуйте, подскажите пожалуйста, как вывести на странице товара все категории в которых присутствует товар. К примеру, имеем товар - "бейсбольная бита" товар присутствует в категориях "спортивный инвентарь", средства защиты", "товары для автолюбитилей, другое". Собственно хочу вывести весь перечень категорий на странице товара. Выглядеть это будет примерно так: Цена: 199.00грн. Старая цена: 249.00грн. Категория: спортивный инвентарь, средства защиты, товары для автолюбитилей, другое. Модель: A-001 Статус: Есть в наличии Артикул: A-015 Категорию ссылками. Буду очень благодарен если подскажете как это сделать. Есть минимальный знания и в php и mysql, но пока "колупаеним контроллера и модела" ничего не добился, спасибо. Версия opencart 1.5.5.1
-
Есть такой код $.ajax({ url: "http://open/admin/get_serials.php?callback=?", dataType: "jsonp", timeout: 60000, cache: false, crossDomain: true, async: false, data: { product_id: '.$order_product_id.', count_s: '.$count_s.', }, success: function(data){ alert(data); }, error: function() { alert("Error"); } }); получил то что мне надо, а как мне теперь полученные данные отправить в контроллер или хотя бы присвоить php переменной
-
во вьюшке написал такой код $.ajax({ type: "get", url: 'index.php?route=sale/order/historyajax&order_id='+order_id, success: function(responce){ //alert(responce); }, error: function() { alert("error"); } }); }); в контроллере метод такой public function historyajax() { $this->load->model('sale/order'); $order_id=$this->request->get['order_id']; $this->model_sale_order->deleteOrder($order_id); } как мне узнать получил ли контроллер переменную order_id или нет, потому что функция deleteOrder не срабатывает)
-
Ребят всем привет! Знакомство с опенкартом я начал вчера, но уже почти сверстал на нем главную страницу своего макета. Я создаю тему для последующей продажи ее на темфоресте. В общем я столкнулся с проблемой, и, я думаю вы можете помочь мне решить ее) Вот демо макета который я "натягиваю" на опенкарт: http://demo.matart.ru/ А в ступор вводит меня следующее: 1) Как вывести модуль (какой?) твиттера в header? но так, чтоб владелец шаблона мог в настройках указать свой логин для импорта твитов? Мой друг, который работет с опенкартом сказал что нужно переписать контроллер, но, опять таки, как это сделать? 2) Тоже самое с кнопками соц сетей, нужно чтоб владелец мог выводить нужные ему соц сети) 3) Как я понял, меню категорий должно тоже находится в header'e, правильно? тогда как сделать чтоб оно шло под слайдером, слайдер тоже в хедер? На данный момент это все что меня беспокоит :) Всем добра! P.s. если у кого есть вопросы или желание работать с themeforest, пишите, могу ответить на ваши вопросы или просто поделиться опытом.
-
добрый день! я полный профан вообще. блондинистая блондинка. вот эскперементирую, создаю для себя свой сайт сама. образовалась проблема. перестал работать личный раздел в подвале сайта, а также в шапке: закладки, постоянный покупатель и оформление заказа. выдает следующее: Warning: Cannot modify header information - headers already sent by (output started at home/h77777/data/www/мой сайт.com/catalog/language/russian/russian.php:1) in /home/h77777/data/www/мой сайт.com/system/engine/controller.php on line 28Warning: Cannot modify header information - headers already sent by (output started at /home/h77777/data/www/мой сайт.com/catalog/language/russian/russian.php:1) in home/h77777/data/www/мой сайт.com/system/engine/controller.php on line 29 насколько я понимаю это проблема с этим файлом. перешла по пути. на для меня это просто ребус. помогите, что неправильно в коде. как поправить ситуацию. и возможно ли это?! что в этих строчках не так. цифр по идее не должно там быть, но что должно?! } protected function redirect($url, $status = 302) { header('Status: ' . $status); header('Location: ' . str_replace(array('&', "\n", "\r"), array('&', '', ''), $url)); exit(); } заранее благодарю за ответ))) если кто-то захочет помочь)))) вот сам код: <?php abstract class Controller { protected $registry; protected $id; protected $layout; protected $template; protected $children = array(); protected $data = array(); protected $output; public function __construct($registry) { $this->registry = $registry; } public function __get($key) { return $this->registry->get($key); } public function __set($key, $value) { $this->registry->set($key, $value); } protected function forward($route, $args = array()) { return new Action($route, $args); } protected function redirect($url, $status = 302) { header('Status: ' . $status); header('Location: ' . str_replace(array('&', "\n", "\r"), array('&', '', ''), $url)); exit(); } protected function getChild($child, $args = array()) { $action = new Action($child, $args); if (file_exists($action->getFile())) { require_once($action->getFile()); $class = $action->getClass(); $controller = new $class($this->registry); $controller->{$action->getMethod()}($action->getArgs()); return $controller->output; } else { trigger_error('Error: Could not load controller ' . $child . '!'); exit(); } } protected function render() { foreach ($this->children as $child) { $this->data[basename($child)] = $this->getChild($child); } if (file_exists(DIR_TEMPLATE . $this->template)) { extract($this->data); ob_start(); require(DIR_TEMPLATE . $this->template); $this->output = ob_get_contents(); ob_end_clean(); return $this->output; } else { trigger_error('Error: Could not load template ' . DIR_TEMPLATE . $this->template . '!'); exit(); } } } ?>
-
Добрый день. У меня есть модуль, который выводит статьи в иерархической структуре (также, как модуль категорий). В нем большое кол-во статей и для пользователя я решил предусмотреть поле, где он бы смог по первым буквам произвести фильтрацию корневого уровня заголовков статей. За основу этого дополнения в существующий модуль я взял статью: https://opencartforum.com/topic/10422-svoi-modul-poiska/ . Но этого к сожалению не хватило, чтобы опция начала работать. Прошу вашей помощи, заранее благодарен. В общих чертах я решил реализовать задачу следующим образом: 1) в файле *.tpl разместить текстовый тег <input>, который возьмет запрос от пользователя и передаст в файл контроллера 2) файл контроллера в свою очередь передаст значение переменной в файл модуля 3) файл модуля отфильтрует в случае, если переменная не пустая, заголовки статей, после чего уже отфильтрованные заголовки попадут обратно в файл *.tpl Вью <div class="box"> <div class="box-heading"><?php echo $heading_title; ?></div> <form action="<?php echo $post_action; ?>" method="post" enctype="multipart/form-data"> <?php if ($poisk) { ?> <input type="text" name="poisk" value="<?php echo $poisk; ?>" /> <?php } else { ?> <input type="text" name="poisk" value="<?php echo 'Введите значение'; ?>" onclick="this.value = '';" onkeydown="this.style.color = '#000000';" /> <?php } ?> <?php foreach($articles as $article) { ?> <?php if ($article['articles'] == $poisk) ?> value=<?php echo $article['articles']?> > <?php echo $article['articles'] ?> <?php } ?> </form> <div class="box-content"> <div class="box-category"> <ul> <?php foreach ($articles as $article) { ?> <li> <?php if ($article['article_id'] == $article_id) { ?> <a href="<?php echo $article['href']; ?>" class="active"><?php echo $article['name']; ?></a> <?php } else { ?> <a href="<?php echo $article['href']; ?>"><?php echo $article['name']; ?></a> <?php } ?> <?php if ($article['children']) { ?> <ul> <?php foreach ($article['children'] as $child) { ?> <li> <?php if ($child['article_id'] == $child_id) { ?> <a href="<?php echo $child['href']; ?>" class="active"> - <?php echo $child['name']; ?></a> <?php } else { ?> <a href="<?php echo $child['href']; ?>"> - <?php echo $child['name']; ?></a> <?php } ?> </li> <?php } ?> </ul> <?php } ?> </li> <?php } ?> </ul> </div> </div> </div> контроллер <?php class ControllerModuleArticle extends Controller { protected function index($setting) { $this->language->load('module/article'); $this->data['heading_title'] = $this->language->get('heading_title'); if (isset($this->request->get['id'])) { $parts = explode('_', (string)$this->request->get['id']); } else { $parts = array(); } if (isset($parts[0])) { $this->data['article_id'] = $parts[0]; } else { $this->data['article_id'] = 0; } if (isset($parts[1])) { $this->data['child_id'] = $parts[1]; } else { $this->data['child_id'] = 0; } $this->data['post_action'] = $this->url->link('catalog/article'); $this->load->model('catalog/article'); $this->data['articles'] = array(); $articles = $this->model_catalog_article->getArticles(0); $this->data['articles'] = $articles; $this->data['poisk'] = false; if (isset($this->request->get['poisk'])) { $this->data['poisk'] = $this->input->get['poisk']; } else { $this->data['poisk'] = ''; } //////////////////////// -------------- модель <?php class ModelCatalogArticle extends Model { public function getArticle($article_id) { return $this->getArticles((int)$article_id, 'by_id'); } public function getArticles($id = 0, $type = 'by_parent') { static $data = null; if ($data === null) { $data = array(); $sql = "SELECT * FROM " . DB_PREFIX . "article a LEFT JOIN " . DB_PREFIX . "article_description ad ON (a.article_id = ad.article_id) LEFT JOIN " . DB_PREFIX . "article_to_store a2s ON (a.article_id = a2s.article_id) WHERE ad.language_id = '" . (int)$this->config->get('config_language_id') . "' AND a2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND a.status = '1'"; if (!empty($data['poisk'])) { $sql .= " AND LCASE(ad.name) LIKE '" . $this->db->escape(utf8_strtolower($data['poisk'])) . "%'"; } $sql .= " ORDER BY a.parent_id, a.sort_order, ad.name"; $query = $this->db->query($sql); foreach ($query->rows as $row) { $data['by_id'][$row['article_id']] = $row; $data['by_parent'][$row['parent_id']][] = $row; } } return ((isset($data[$type]) && isset($data[$type][$id])) ? $data[$type][$id] : array()); } ///////////////////////////////////-----------------------------------------