我的模块名为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。好吧,我的管理员/标签列表中有一个新标签。但仍然无法控制它。
我可以用这个标签做什么btw?也许我可以把它放在管理菜单上的任何地方?
如何从网址获取此检查控制器?
答案 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();
我希望它有所帮助!