【发布时间】:2014-09-24 22:32:39
【问题描述】:
在 prestashop 中生成模块控制器链接的确切方法是什么?另外,应该如何真正命名控制器的类以及 url 参数应该如何反映?
【问题讨论】:
标签: hyperlink module controller prestashop
在 prestashop 中生成模块控制器链接的确切方法是什么?另外,应该如何真正命名控制器的类以及 url 参数应该如何反映?
【问题讨论】:
标签: hyperlink module controller prestashop
您将使用 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..]);
【讨论】:
Link 课程轻松找到答案。只需查看Link::getModuleLink() 是否存在,如果存在,请查看代码。和/或最终只是尝试一下。
另一种创建链接的方法是在视图(模板文件)中使用超链接,如下所示:
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
在类名中缺少“controller”的“r”并产生以下错误:
注意 2:我使用这个最优秀的教程(带有完整的具体示例)开始我自己的项目:http://nemops.com/creating-new-pages-in-prestashop/#.VjpH2LerRhF
【讨论】: