Prestashop 1.7.8.8前台生成后台URL报错:PS_ADMIN_DIR未定义如何解决?
解决Prestashop 1.7.8.8前台生成后台管理URL的问题
问题根源
前台环境默认不会初始化后台专属常量PS_ADMIN_DIR,而getLegacyAdminLink方法依赖该常量拼接admin目录路径,导致URL缺失admin目录并触发报错。
解决方案
1. 手动定义PS_ADMIN_DIR常量
在调用getLegacyAdminLink之前,先定义该常量(注意替换为你的实际后台目录名,比如自定义的admin123):
if (!defined('PS_ADMIN_DIR')) { // 假设后台目录名为admin,若为自定义名称请替换 define('PS_ADMIN_DIR', _PS_ROOT_DIR_ . DIRECTORY_SEPARATOR . 'admin'); }
2. 调用getLegacyAdminLink生成URL
常量定义完成后,再执行原方法即可生成正确URL:
$adminUrl = $this->context->link->getLegacyAdminLink('AdminKbProductApprovalList', false);
3. 备选方案:手动拼接URL
如果上述方法仍有异常,可直接手动拼接URL:
$adminDir = 'admin'; // 替换为你的实际后台目录名 $adminUrl = $this->context->link->getBaseLink() . $adminDir . '/index.php?controller=AdminKbProductApprovalList';
内容的提问来源于stack exchange,提问作者Tape JIka
相关产品推荐
相关产品推荐

