带控制器的 Prestashop 模块抛出 404

Pro*_*gal 1 php prestashop

我正在开发一个带有控制器的模块,用于读取 id_cart 并执行一些操作。但是我不能调用控制器,它总是返回 404 错误。

模块:

<?php
if (!defined('_PS_VERSION_'))
  exit;

class CartPortkey extends Module
{
  public function __construct()
  {
    $this->name = 'cartportkey';
    $this->tab = 'checkout';
    $this->version = '1.0.0';
    $this->author = 'Me and nobody else';
    $this->need_instance = 0;
    $this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_); 
    $this->bootstrap = true;

    parent::__construct();

    $this->displayName = $this->l('My Module Name');
    $this->description = $this->l('My Module Description.');

    $this->confirmUninstall = $this->l('Estás seguro de desinstalar?');
  }
}
Run Code Online (Sandbox Code Playgroud)

控制器

<?php

if (!defined('_PS_VERSION_'))
        exit;

class CartPortkeyFrontController extends ModuleFrontController   {
    public function init(){
        parent::init();
        $id_cart = (int)Tools::getValue('id_cart');
        $this->context->cookie->id_cart = $id_cart;
        $link_order = $this->context->link->getPageLink('order');
        Tools::redirect($link_order);
    }
    public function initContent() {
        parent::initContent();
    }

}

?>
Run Code Online (Sandbox Code Playgroud)

我正在尝试这个网址: http://localhost/shop/myshop1/index.php?fc=module&module=cartportkey&controller=cartportkeyfrontcontroller&id_cart=2

我必须指定我已启用多商店,其中shop是主要myshop1商店,并且是 3 家商店之一。

文件夹结构:

+ cartportkey
-- +controllers
-- -- +front
-- -- -- CartPortKeyController.php
-- cartportkey.php
Run Code Online (Sandbox Code Playgroud)

我已确保该模块已安装并在所有商店中处于活动状态。

The*_*rot 5

您的控制器命名约定错误。

您需要按如下方式声明前端控制器类。

ModuleNameControllerFileNameModuleFrontController extends ModuleFrontController
Run Code Online (Sandbox Code Playgroud)

所以目前你的控制器类应该声明为

CartPortKeyCartPoortKeyControllerModuleFrontController extends ModuleFrontController
Run Code Online (Sandbox Code Playgroud)

然后使用以下网址加载控制器

http://localhost/shop/myshop1/index.php?fc=module&module=cartportkey&controller=cartpoortkeycontroller&id_cart=2
Run Code Online (Sandbox Code Playgroud)