如何在opencart中调用控制器内的函数

时间:2011-11-02 15:30:41

标签: php ajax opencart

我有一个控制器,让我们说thingy/stuff目录

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

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

我看到的网址是index.php?route=thingy/stuff&var=dd

我想要的是在该控制器内调用$ .post到该函数

因此它使用另一个模板文件thingy.tpl并返回html以使用

网址应该是什么?

我搜索了几个小时,听起来好像没有开放式购物车的开发文档

2 个答案:

答案 0 :(得分:6)

假设你在thingy文件夹下有一个名为“stuff”的控制器,在该类中有一个名为“my function”的函数,如下所示:

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

如果你想使用URL直接与这个函数通信,你可以将函数名称添加到路由参数“route = thingy / stuff / myfunction&amp; ...”的末尾,并在函数内加载thingy.tpl并在渲染后返回:

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

如果使用open cart 1.5并且你想使用带有JSON的jQuery AJAX,那么你需要在渲染之前导入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模板使用相同的技术来加载每个部分的模板。

答案 1 :(得分:3)

如果路由不是索引,则会添加到路由中,默认情况下,例如

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