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

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

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

Как сделать примерно следующий запрос средствами 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 пользователей онлайн

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

×

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

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