Function 创建一个链接,用于打开页面并运行链接中包含的函数

Function 创建一个链接,用于打开页面并运行链接中包含的函数,function,module,hyperlink,action,opencart,Function,Module,Hyperlink,Action,Opencart,我仍在学习PHP,所以我的问题似乎有点明显,但 我的问题与opencart有关,但在许多网站上可能是一个相当普遍的做法。我正在创建一个opencart模块,在该模块中,我有几个按钮可以完成不同的任务。现在,我已经为按钮指定了正确的“href”以及路径和适当的操作。乙二醇 $this->data['dosomething'] = $this->url->link('module/modulename/dosomething', 'token=' . $this->sessi

我仍在学习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,我会收到一个错误,因为它试图使用函数“dosomething”查找位于“module/modulename/dosomething”中的控制器和模板,而不是位于“module/modulename”中的控制器和模板


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

你所做的是正确的。如果指定为方法,OpenCart的框架将使用路由的第三部分。如果你尝试

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

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

您所做的是正确的。如果指定为方法,OpenCart的框架将使用路由的第三部分。如果你尝试

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

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