Search code examples
hyperlinkmodulecontrollerprestashop

how to generate a link to a module controller in prestashop?


What's the exact way to generate a link to a module controller in prestashop? Also, how should really be named the controller's class and how the url params should mirror?


Solution

  • DISCLAIMER: this was an answer written in 2014, thus for prestashop 1.6: not sure if it still works.

    You will use an instance of the Link class. Generally you don't have to create one, just use context->link (ex. form a controller $this->context-link). The method is getModuleLink(), so:

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

    Beware the naming:

    • Module folder name is exactly that..

    • The controller must be in the right path, so for example module/controllers/front/controller.php

    • The file name is the action, lowercase. The class name is ModuleFolder+Action+"ModuleFrontController"

    So, for example:

    module dir: orderattachment

    controller: orderattachment/controllers/front/pdf.php

    controller class:

    class OrderAttachmentPdfModuleFrontController extends ModuleFrontController
    

    link:

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