Hyperlink 如何在prestashop中生成到模块控制器的链接?

Hyperlink 如何在prestashop中生成到模块控制器的链接?,hyperlink,module,controller,prestashop,Hyperlink,Module,Controller,Prestashop,在prestashop中生成模块控制器链接的确切方式是什么?另外,控制器的类应该如何命名,url参数应该如何镜像?您将使用链接类的实例。通常,您不必创建一个,只需使用上下文->链接(例如,形成一个控制器$this->上下文链接)。方法是getModuleLink(),因此: $this->context->link->getModuleLink('module_folder_name','controller_name',array_of_params); 注意命名: 模块

在prestashop中生成模块控制器链接的确切方式是什么?另外,控制器的类应该如何命名,url参数应该如何镜像?

您将使用链接类的实例。通常,您不必创建一个,只需使用
上下文->链接
(例如,形成一个控制器
$this->上下文链接
)。方法是
getModuleLink()
,因此:

$this->context->link->getModuleLink('module_folder_name','controller_name',array_of_params);
注意命名:

  • 模块文件夹名称正是

  • 控制器必须位于正确的路径中,例如module/controllers/front/controller.php

  • 文件名为操作,小写。类名为ModuleFolder+Action+“ModuleFrontController”

例如:

模块目录:订单附件

控制器:订单附件/controllers/front/pdf.php

控制器类

class OrderAttachmentPdfModuleFrontController extends ModuleFrontController
$this->context->link->getModuleLink('orderattachments', 'pdf', [params..]);
链接

class OrderAttachmentPdfModuleFrontController extends ModuleFrontController
$this->context->link->getModuleLink('orderattachments', 'pdf', [params..]);

创建链接的另一种方法是在视图(模板文件)中使用超链接,如下所示:

 index.php?fc=module&module=MODULE_NAME&controller=CONTROLLER_NAME
例如,在汽车修理店的电子商务中,客户必须设置他/她在下一次预约期间将拥有的汽车(右侧列中挂接的模块)

如果他/她的车辆不存在,他/她需要创建一个新的车辆(我们要调用的前端控制器页面)

在我的示例中,在视图中,链接是:

<a href="index.php?fc=module&module=vehiclefile&controller=newvehicle">{l s='Create a new vehicle' mod='vehicleFile'}</a>
在类名中缺少“controller”的“r”,并产生以下错误:


注2:我使用了这个最优秀的教程(带有一个完整的具体示例)来开始我自己的项目:

如果没有控制器,如何指定控制器的名称?我有:“$this->context->link->getModuleLink('wul4pay','payment',[],true)”,但我没有控制器。我的“payment”应该是模块控制器:你确定不是吗?你检查过模块的文件夹了吗?此外,一般来说,“链接到控制器”与“链接到页面”完全相同。我的意思是,一个页面存在一个控制器。换句话说,如果你没有一个控制器,那么你就没有一个专用的页面,所以问题是:你想链接什么?对于管理链接:$this->context->link->getAdminLink(ControllerName)老实说,我不知道,我还没有测试1.7。但是我想你可以通过查看
链接
类很容易找到答案。只需查看是否存在
Link::getModuleLink()
,如果存在,请查看代码。和/或最终只是尝试一下。我尝试了1.7.5,这就是我卡住的地方: