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

[Решено] jquery запрос к методам библиотеки


Recommended Posts

Как сделать примерно следующий запрос средствами jquery?

index.php?route=catalog/modulename/methodname&parametr=1&parametr2=2&token=...

jquery скрипт делает гет запрос, но проблема в том что если метод определяется непосредственно в файле модуля (например в pay/mymodulepay.php) то запрос срабатывает без проблем. А если я этот модуль запихиваю в свою библотеку system/library/mymodule.php в виде класса с необходимыми методами, а потом подключаю свою библиотеку непосредственно в модуле то гет запрос не срабатывает. Возвращает ошибку типа страница не найдена. В чем ошибка? Или к библиотеке таким образом не обратиться?

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


Информации достаточно.

Нет, к библиотеке нельзя, только к контроллерам. Делайте контроллер, в нем инстанцируйте класс библиотеки, производите вызов метода и возвращайте результат через контроллер.

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

Вот так работает:
 

class ControllerShippingMyModule extends Controller {
    private $error = array();
    public function index() {
        $this->load->language('shipping/mymodule');
        $this->document->setTitle($this->language->get('heading_title'));
        $this->load->model('setting/setting');
      
#......... стандартный код обычной доставки

        $this->template = 'shipping/mymodule.tpl';
        $this->children = array(
            'common/header',
            'common/footer'
        );
        $this->response->setOutput($this->render());
    }
  
    public function getData($filter, $order) {
        $json = array();
        #какой-то код
        $this->response->setOutput(json_encode($json));
    }
    private function validate() {
        if (!$this->user->hasPermission('modify', 'shipping/mymodule')) {
            $this->error['warning'] = $this->language->get('error_permission');
        }
        if (!$this->error) {
            return true;
        } else {
            return false;
        }
    }
}

Когда делаю запрос при помощи jquery
 

index.php?route=shipping/mymodule/getData&filter=1&order=2&token=...

Все работает!
Ну когда запихиваю метод в библиотеку 
 

system/library/mymodule.php

С кодом
 

class MyModule {
   public function getData($filter, $order) {
        #code 
        }
#...
}

Щас нету возможности скопировать код с инстанцированием класса библиотеки, ну что-то дальше не идет. Может есть пример в двух словах? Как с методами быть чтобы запрос сработал?
 

index.php?route=shipping/mymodule/getData&filter=1&order=2&token=...

Чтото я уже в трех соснах запутался...
Уже и через конструктор контроллера и через $registry и просто подключал load->library(...);

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


Вам tabook сказал как правильно сделать.

В методе контроллера вызванного через ajax - вызывайте метод библиотеки

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

Примерно так?
 

class ControllerShippingMyModule extends Controller {
    private $error = array();
    public function index() {
        $this->load->language('shipping/mymodule');
        $this->document->setTitle($this->language->get('heading_title'));
        $this->load->model('setting/setting');
      
#......... стандартный код обычной доставки

        $this->template = 'shipping/mymodule.tpl';
        $this->children = array(
            'common/header',
            'common/footer'
        );
        $this->response->setOutput($this->render());
    }
  
    public function getData() {
        $this->mymodule-getData();       
    }
    private function validate() {
        if (!$this->user->hasPermission('modify', 'shipping/mymodule')) {
            $this->error['warning'] = $this->language->get('error_permission');
        }
        if (!$this->error) {
            return true;
        } else {
            return false;
        }
    }
}
Надіслати
Поділитися на інших сайтах


Гість
Ця тема закрита для публікації повідомлень.
  • Зараз на сторінці   0 користувачів

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

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

Important Information

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