Перейти к содержанию

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

Доброго времени суток! По недостатку опыта не могу решить проблему с вызовом своих функций в контроллере. Написал функцию с именем getLastOrder, (в файл footer.php), результат присваивается переменной return $this->data['orderNumber']. При помещении в index() все работает, но для обновления значения нужна перезагрузка, знаю что обращение к функции нужно делать GET запросом(index.php?route=common/footer/getLastOrder) с помощью AJAX, но никак не могу понять как из неё принять это самое значение переменной. Как построить такой ajax запрос подскажите, пожалуйста.

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


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

Метод (функция) getLastOrder должна быть с модификатором доступа public.

Вот код на jQuery для AJAX запроса:

$.post("index.php?route=common/footer/getLastOrder", function(data) {
// в переменной data находиться ответ сервера
  $("селектор куда вставлять").text(data);
});

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


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

функция public. Этот запрос выводит код всей страницы. то есть начиная с 

<!DOCTYPE html> <html dir="ltr" lang="ru"> <head>...

 и заканчивая 

</html>

, а переменную так и не увидел. Я уже пробовал подобное только у меня вывело полностью всю страницу в HTML.

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


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

Это либо 404, либо в этой функции рэндериться шаблон.

Выложите код функции.

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


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


public function getLastOrder() {

$this->load->language('common/footer');

$this->data['text_footer'] = sprintf($this->language->get('text_footer'), VERSION);

$orderLast = $this->db->query("SELECT * FROM `order`\n"

. "ORDER BY `order`.`order_id` DESC LIMIT 1");

$rows = $orderLast->row;

$this->data['orderNumber'] = $rows['order_status_id'];

}

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


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

Подробнее: Есть человек который будет сидеть в админке сайта и отслеживать новые заказы, хочу сделать так чтобы при добавлении нового заказа, в админке всплывало оповещение(например как оповещение на vk.com) с звуковым сигналом. хочу с помощью setInterval(java), сделать проверку на наличие заказов с статусом новый. Делать грабли( то есть такую проверку прямыми запросами из .tpl файла не хочется).

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


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

AJAX запрос ждет ответ. Здесь ответ не задан.

Добавьте в функцию проверку:

if ($_SERVER['REQUEST_METHOD'] == 'POST' /* или GET */) {
    print_r('test');
    exit();
} 

если test текст передастся в шаблон можно переписать эту функцию так:

public function getLastOrder() {
    $orderLast = $this->db->query("SELECT * FROM `order`\n" . "ORDER BY `order`.`order_id` DESC LIMIT 1");

    $rows = $orderLast->row;
    $order_status_id = $rows['order_status_id'];

    if ($_SERVER['REQUEST_METHOD'] == 'POST' /* или GET */) {
        print_r($order_status_id);
        exit();
    }

    $this->load->language('common/footer');
    $this->data['text_footer'] = sprintf($this->language->get('text_footer'), VERSION);
    $this->data['orderNumber'] = $order_status_id;
} 

но здесь выводиться не номер последнего заказа а его статус

  • +1 1

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


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

и это лучше делать хэлпером или модулем, а не писать лишнего в контроллерах. 

  • +1 1

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


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

посмотрите на примере json хелпера

подключается в

system/startup.php

// Helper

require_once(DIR_SYSTEM . 'helper/json.php');

далее функции используются где угодно

$this->response->setOutput(json_encode($json));      

 

  • +1 1

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


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

 

Вероятно это 404 ошибка.

Принты поставьте в функции для отладки (print_r('debug')) и перейдите по адресу index.php?route=common/footer/getLastOrder  в браузере.

Выводит текст или страница не найдена?

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


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

Вероятно это 404 ошибка.

Принты поставьте в функции для отладки (print_r('debug')) и перейдите по адресу index.php?route=common/footer/getLastOrder  в браузере.

Выводит текст или страница не найдена?

при переходе по ссылке пишет 

У Вас нет прав для доступа к этой странице. Если она Вам нужна, обратитесь к администратору.

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


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

Еще один вопрос. Как добавить позицию модуля в админ панели opencart. В интернете полно инструкций по добавлению позиций на сайт, а вот в панель не видел ни одной. Простите если глупый вопрос.

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


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

Решил проблему внеся функцию в контроллер home.php. Обращаюсь к ней так:

setInterval(updateInfo, 5000);
 
    function updateInfo()
    {
        console.log('ajax');
        $('#feedOrder').load('index.php?route=common/home/getLastOrder&token=<?php echo $token; ?>');
    }

Может конечно не самое лучшее решение, но парсит те данные которые нужны, ошибок нет. Если Я не прав исправьте пожалуйста.

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


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

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

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

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

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

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

Войти

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

Войти

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

    • От pyatka
      300.00 руб
      Скачать/Купить дополнение


      Изображения функций товаров
      Известно, что картинка лучше текста, с точки зрения продаж. Обозначьте ключевые функции товаров изображениями и покупателю будет проще найти то, что ему нужно. Добавьте описание к изображениям, чтобы быть уверенным в том, что клиент вас поймет.
      Такой подход дает возможность сразу увидеть нужные функции у товара (например WI-FI).
      Особенности:
      Модуль использует стандартные возможности OpenCart для того чтобы встроиться на страницу товара. По вопросу о размещении виджета в другом месте на странице обращаться в ЛС
      VqMod нужен только для внесения изменений в админку, дабы другие модули и обновления могли без проблем установиться
      На данный момент OC 2.* не поддерживается, будет портирован при наличии спроса

      Требования:
      VqMod
      OpenCart 1.5.*, ocStore

      Установка:
      Без особенностей, просто перенести файлы из архива в корень сайта
      Добавил pyatka Добавлено 22.07.2015 Категория Модули  
    • От pyatka
      Известно, что картинка лучше текста, с точки зрения продаж. Обозначьте ключевые функции товаров изображениями и покупателю будет проще найти то, что ему нужно. Добавьте описание к изображениям, чтобы быть уверенным в том, что клиент вас поймет.
      Такой подход дает возможность сразу увидеть нужные функции у товара (например WI-FI).
      Особенности:
      Модуль использует стандартные возможности OpenCart для того чтобы встроиться на страницу товара. По вопросу о размещении виджета в другом месте на странице обращаться в ЛС
      VqMod нужен только для внесения изменений в админку, дабы другие модули и обновления могли без проблем установиться
      На данный момент OC 2.* не поддерживается, будет портирован при наличии спроса

      Требования:
      VqMod
      OpenCart 1.5.*, ocStore

      Установка:
      Без особенностей, просто перенести файлы из архива в корень сайта
  • Последние посетители   0 пользователей онлайн

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

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.