0

我的模块称为Test,这是一个后台控制器,这是check代码

class TestCheckModuleAdminController extends ModuleAdminController {

    public function __construct()
    {

        echo "Checked!";

    }

}

当我要去的时候,mysite/admin/index.php?controller=check&module=test我收到了它不存在的消息,所以出了什么问题?

我什至为它打开了有效的网址,它必须是这样的:

mysite/admin/module/test/check但对此没有回应。

虽然如果它是这样的前端控制器:

class TestCheckModuleFrontController extends ModuleFrontController {

    public function __construct()
    {

        echo "Checked Front!";

    }

}

url 就像这样mysite/module/test/check,没关系。

我想这不是重写规则.htaccess

我试过这个...

RewriteCond %{HTTP_HOST} ^test.test$
RewriteRule ^admin([0-9]{4})/module/([a-z]+)/([a-z]+) module=$1&controller=$2 [L]

也许这是不对的,但接近答案。

更新 1。

prestashop/modules/mymodule/controllers/admin/check.php

它现在是来源:

class TestCheckController extends ModuleAdminController {

    public function __construct()
    {   
        echo "Checked!";
    }

}

我必须使用什么网址?

upd 2.好吧,我的管理员/标签列表中有一个新标签。但仍然无法在其上使用控制器。

俄罗斯小组

顺便说一句,我可以用这个标签做什么?也许我可以把它放在管理菜单上的任何地方不是吗?

查看

如何从 url 获取此检查控制器而不是?

4

2 回答 2

1

在 BackOffice,您的控制器是“TestCheckModule”,因此您应该通过以下方式调用它:

admin/index.php?controller=TestCheckModule&token=xxxxxxxxxxxxxxxxxxxxxxxxxxx

您还应该提供适当的令牌。

您无需在 URL 中提供模块名称。

最好在控制器前加上“Admin”

于 2014-01-20T14:33:49.340 回答
1

对于名称,您应该只写 TestCheckController 而不是 TestCheckModuleAdminController。我最近做了它,它对我有用。

您还可以以您不需要自己提供令牌的方式扩展 Prestashop 菜单栏:

在您的模块安装方法中,添加以下代码:

$parentTab = new Tab();
$parentTab->name[$this->context->language->id] = $this->l'('My module Top tab');
$parentTab->class_name = 'TopModuleNav';
$parentTab->id_parent = 0;
$parentTab->module = $this->name;
$parentTab->add();

$adminMenuItem = new Tab();
$adminMenuItem->name[$this->context->language->id] = $this->l'('Admin Menu Item');
$adminMenuItem->class_name = "TestCheck";
$adminMenuItem->module = $this->name;
$adminMenuItem->id_parent = $parentTab->id;
$adminMenuItem->add();

我希望它有帮助!

于 2014-01-20T15:46:01.197 回答