我正在尝试构建一个模块,但不清楚为什么它不起作用?

时间:2014-01-20 13:09:44

标签: prestashop prestashop-1.5

我的模块名为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!";

    }

}

这个网址就像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。好吧,我的管理员/标签列表中有一个新标签。但仍然无法控制它。

russian panel

我可以用这个标签做什么btw?也许我可以把它放在管理菜单上的任何地方?

check

如何从网址获取此检查控制器?

2 个答案:

答案 0 :(得分:1)

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

管理员/ index.php的控制器= TestCheckModule&安培;标记= xxxxxxxxxxxxxxxxxxxxxxxxxxx

你也应该提供一个合适的令牌。

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

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

答案 1 :(得分: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();

我希望它有所帮助!