1

我还在学习 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'中的控制器和模板,而不是使用函数'dosomething'位于'module/modulename'中的控制器和模板。

我希望这是有道理的。我看到 opencart 中的许多其他脚本成功地使用了这种方法,但我就是不知道怎么做?我确定我遗漏了一些明显的东西。

4

1 回答 1

1

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

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

然后转到您获得的网址,它应该只显示一个空白的白色页面,OK上面写着。我的猜测是该错误实际上与控制器的问题无关,更多的是与您所做的其他事情有关。要么,要么方法和路由的第三部分不匹配,要么dosomething方法不是公共的

于 2012-08-12T12:21:45.703 回答