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

时间:2014-08-01 16:45:32

标签: hyperlink module controller prestashop

在prestashop中生成模块控制器链接的确切方法是什么?另外,应该如何真正命名控制器的类以及url params应该如何镜像?

2 个答案:

答案 0 :(得分:26)

您将使用Link类的实例。通常,您不必创建一个,只需使用context->link(例如,形成一个控制器$this->context-link)。该方法为getModuleLink(),因此:

$this->context->link->getModuleLink('module_folder_name','controller_name',array_of_params);

注意命名:

  • 模块文件夹名称恰好是..

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

  • 文件名是操作,小写。类名是ModuleFolder + Action +" ModuleFrontController"

所以,例如:

模块目录: orderattachment

控制器: orderattachment / controllers / front / pdf.php

控制器类

class OrderAttachmentPdfModuleFrontController extends ModuleFrontController

链接

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

答案 1 :(得分:3)

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

 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>

注意:正如 Stratboy 在他的回答中所提到的,命名惯例非常重要,否则Prestashop无法找到该页面。例如,

class VehicleFileNewVehicleModuleFrontControlle extends ModuleFrontController

缺少&#34; r &#34; &#34; 控制器&#34;在类名中并产生以下错误:

enter image description here

注意2 :我使用了这个最优秀的教程(有一个完整的具体示例)来开始我自己的项目:http://nemops.com/creating-new-pages-in-prestashop/#.VjpH2LerRhF