在prestashop中生成模块控制器链接的确切方法是什么?另外,应该如何真正命名控制器的类以及url params应该如何镜像?
答案 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;在类名中并产生以下错误:
注意2 :我使用了这个最优秀的教程(有一个完整的具体示例)来开始我自己的项目:http://nemops.com/creating-new-pages-in-prestashop/#.VjpH2LerRhF