Jump to content
Sign in to follow this  
YoyoT

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

Recommended Posts

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

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

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

Share this post


Link to post
Share on other sites

Мало информации

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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(...);

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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;
        }
    }
}

Share this post


Link to post
Share on other sites

типа того.

Share this post


Link to post
Share on other sites

Всем спасибо за ответы)))

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.