微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

手动选项卡安装返回true,但在Prestashop 1.7中未显示在后台

如何解决手动选项卡安装返回true,但在Prestashop 1.7中未显示在后台

我的管理控制器如下所示:

use PrestaShopBundle\Controller\Admin\FrameworkBundleAdminController;
use PrestaShopBundle\Security\Annotation\AdminSecurity;
use Symfony\Component\HttpFoundation\Response;

class IezonPortfolioController extends FrameworkBundleAdminController {
    const TAB_CLASS_NAME = 'IezonPortfolioController';
    
     /**
     * @AdminSecurity("is_granted('read','IezonPortfolioControllerTabsManualTab')")
     *
     * @return Response
     */
    
    public function indexAction()
    {
        return $this->render('@Modules/iezonportfolio/views/templates/admin/display.html.twig',array(
            'contents_iezonportfolio' => \Module::getInstanceByName('iezonportfolio')->selectAll()
        ));
    }
}

通过这样的标签安装:

protected function _installTabs()
{
    $controllerClassName = IezonPortfolioController::TAB_CLASS_NAME;
    
    $tabId = (int) Tab::getIdFromClassName($controllerClassName);
    if (!$tabId) {
        $tabId = null;
    }

    $tab = new Tab($tabId);
    $tab->active = 1;
    $tab->class_name = $controllerClassName;
    $tab->route_name = 'iezonportfolio';
    $tab->name = [];
    foreach (Language::getLanguages() as $lang) {
        $tab->name[$lang['id_lang']] = $this->trans('My Portfolio',[],'Modules.IezonPortfolio.Admin',$lang['locale']);
    }
    $tab->icon = 'build';
    $tab->id_parent = (int) Tab::getIdFromClassName('IMPROVE');
    $tab->module = $this->name;

    return (bool) $tab->save();
}

路线如下:

iezonportfolio:
  path: iezonportfolio
  methods: [GET]
  defaults:
    _controller: 'IezonPortfolioController::indexAction'

我的Twig模板如下:

{% extends '@PrestaShop/Admin/layout.html.twig' %}

{% block content %}
  Test
{% endblock %}

当我上传模块以在后台测试输出时,该选项卡未显示。我的模块安装方法如下:

public function install() {
    return (parent::install() && $this->_installTabs() &&
        $this->registerHook('displayHome')
        && $this->registerHook('header'));
}

模块抛出此错误

ClassNotFoundException on line:

$controllerClassName = IezonPortfolioController::TAB_CLASS_NAME;

但是Demo Controller从不包含Controller吗?有什么想法吗?

更新:如果我删除了它,而只是手动将'IezonPortfolioController'输入为String,它可以很好地安装,但不会显示选项卡吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。