как вызвать функцию внутри контроллера в opencart - PullRequest
0 голосов
/ 02 ноября 2011

У меня есть контроллер, в котором, скажем, thingy/stuff каталог

<?php public function index() { /*thingy stuff */ }

public function anotherfunction() {/*other thingy stuff*/} ?>

я вижу URL как index.php?route=thingy/stuff&var=dd

я хочу вызвать $ .post для этой функции внутри этого контроллера

, поэтому он использует другой файл шаблона thingy.tpl и возвращает html для использования

что должен понравиться URL ??

Я искал часы, и звучит так, как будто нет документации по разработке для open-cart

Ответы [ 2 ]

6 голосов
/ 02 ноября 2011

скажем, у вас есть контроллер с именем "stuff" в папке thingy и функция с именем "my function" в этом классе, которая выглядит следующим образом:

class ControllerThingyStuff extends Controller {
    public function index() {  
  // Some code
}
public function myfunction() {
// Your code
}
}

, если вы хотите напрямую связаться сЭта функция, используя URL, вы можете добавить имя функции в конец параметра маршрута "route = thingy / stuff / myfunction & ..." и загрузить thingy.tpl внутри функции и вернуть его после рендеринга:

// some code
$this->template = 'template/product/thingy.tpl';
...
$this->response->setOutput($this->render());

если вы используете открытую корзину 1.5 и хотите использовать jQuery AJAX с JSON, вам нужно будет импортировать библиотеку JSON перед рендерингом:

$this->template = 'thingy/stuff/thingy.tpl';
$json['output'] = $this->render();
$this->load->library('json');
$this->response->setOutput(Json::encode($json));

, посмотрите на страницу оформления заказа, чтобыЕсли у вас есть идеи, шаблон open cart 1.5 по умолчанию использует ту же технику для загрузки шаблонов для каждого раздела.

3 голосов
/ 02 ноября 2011

Он добавляется к маршруту, если это не индекс, который используется по умолчанию, например

<?php
class ControllerThingyStuff extends Controller {

    public function index() {
        // This is called with route=thingy/stuff or thingy/stuff/index
    }

    public function something() {
        // This is called with route=thingy/stuff/something
    }
}
...