创建一个链接,打开页面并运行链接中包含的功能

时间:2012-08-12 07:18:18

标签: function module hyperlink action opencart

我还在学习PHP,所以我的问题可能看起来有点明显但是......

我的问题与opencart有关,但在许多网站上可能是很常见的做法。我正在创建一个opencart模块,在该模块中,我有几个完成不同任务的按钮。现在我已经为该按钮分配了正确的'href',其中包含路径和相应的操作。例如

$this->data['dosomething'] = $this->url->link('module/modulename/dosomething', 'token=' . $this->session->data['token'], 'SSL');

注意:出于我的问题,我已将模块和操作调用为通用名称。

在控制器中,我有一个名为'index'的私有函数,后跟一个名为'dosomething'的私有函数,如下所示

public function index() {

* insert code *

}

public function dosomething() {

*insert code*

$this->redirect($this->url->link('module/modulename', 'token=' . $this->session->data['token'], 'SSL'));

}

现在,我想知道如何让按钮指向模块控制器,然后运行'dosomething'功能。我可以在链接中放置一些信息,即action = dosomething并以这种方式执行,但大多数opencart只使用最后一个/作为操作的文本。如果我使用上面描述的href,我会收到一个错误,因为它试图找到位于'module / modulename / dosomething'中的控制器和模板,而不是位于'module / modulename'中的控制器和模板,使用函数'dosomething'。

我希望这是有道理的。我看到opencart中的许多其他脚本成功使用了这种方法,但我只是想弄清楚如何?我确信我错过了一些明显的东西。

1 个答案:

答案 0 :(得分:1)

你在做什么是正确的。如果指定为方法,OpenCart的框架将使用路径的第三部分。如果你试试

public function dosomething() {
    die('OK');
}

然后转到你已经获得的网址,它应该只显示一个空白的白页,上面写有OK。我的猜测是错误实际上并不是控制器是一个问题,更多的是与你做过的其他事情有关。这个,或路线的方法和第三部分不匹配,或dosomething方法不公开