我还在学习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中的许多其他脚本成功使用了这种方法,但我只是想弄清楚如何?我确信我错过了一些明显的东西。
答案 0 :(得分:1)
你在做什么是正确的。如果指定为方法,OpenCart的框架将使用路径的第三部分。如果你试试
public function dosomething() {
die('OK');
}
然后转到你已经获得的网址,它应该只显示一个空白的白页,上面写有OK
。我的猜测是错误实际上并不是控制器是一个问题,更多的是与你做过的其他事情有关。这个,或路线的方法和第三部分不匹配,或dosomething
方法不公开