Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Проблема с функцией


Recommended Posts

Доброго времени суток! По недостатку опыта не могу решить проблему с вызовом своих функций в контроллере. Написал функцию с именем 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.

Надіслати
Поділитися на інших сайтах



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
Надіслати
Поділитися на інших сайтах


посмотрите на примере 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; ?>');
    }

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

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.