在Magento 2中将自定义活动链接添加到客户帐户导航


10

我正在尝试在客户帐户导航中添加自定义链接。我的自定义链接也显示在帐户导航中,并且也可以正常工作,但是单击时并没有显示为活动/当前状态。

在此处输入图片说明

下面是我的代码:

/app/code/Namespace/Support/view/frontend/layout/customer_account.xml

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="customer_account_navigation">
            <block class="Magento\Framework\View\Element\Html\Link\Current" name="customer-account-navigation-suppport-ticket-link" after="-">
                <arguments>
                    <argument name="path" xsi:type="string">support/customer/index</argument>
                    <argument name="label" xsi:type="string">Support Ticket</argument>
                </arguments>
            </block>
        </referenceBlock>
    </body>
</page>

/ app / code /命名空间/Support/Controller/Customer/Index.php

<?php
namespace Namespace\Support\Controller\Customer;

use Magento\Framework\App\Action;
use Magento\Framework\Exception\NotFoundException;
use Magento\Framework\Controller\ResultFactory;

class Index extends \Namespace\Support\Controller\Index
{
    /**
     * Show customer tickets
     *
     * @return \Magento\Framework\View\Result\Page
     * @throws NotFoundException
     */
    public function execute()
    {
        /** @var \Magento\Framework\View\Result\Page resultPage */
        $resultPage = $this->resultFactory->create(ResultFactory::TYPE_PAGE);
        return $resultPage;
    }
}

/app/code/Namespace/Support/view/frontend/layout/support_customer_index.xml

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <update handle="customer_account"/>
    <head>
        <title>Support Ticket</title>
        <css src="Namespace_Support::css/styles.css"/>
    </head>
    <body>
        <referenceContainer name="content">
            <block class="Namespace\Support\Block\TicketList" name="ticketViewList" template="Namespace_Support::list.phtml" />
        </referenceContainer>
    </body>
</page>

6
从更改路径 <argument name="path" xsi:type="string">support/customer/index</argument><argument name="path" xsi:type="string">support/customer</argument>
Codrain Technolabs Pvt Ltd 16-4-22

让我知道是否有帮助
Codrain Technolabs Pvt Ltd

@YagneshPonkiya。感谢您的快速回复。是的,它正在工作。将您的评论作为答案,以便我接受。
Shyam

@YagneshPonkiya。另外,您能告诉我问题是什么吗?为什么我们需要改变呢?提前致谢。
Shyam

@Shyam,您完成了此模块吗?我正在M2项目中创建相同的功能。因此,能否请您指导我如何创建此功能?谢谢
mageDev0688 '17

Answers:


23

为了完成任务,请按如下所示更改布局文件中的路径。

<argument name="path" xsi:type="string">support/customer</argument>

请注意,我已从路径字符串中删除了动作部分。

有关更多信息,为什么需要执行此操作,请研究以下文件。

Magento \ Framework \ View \ Element \ Html \ Link \ Current.php

希望这能够帮到你。


如果我有另一个操作名称而不是Index,则不会调用....
Manish

如果您除了“索引”以外还有其他操作。您应该使用完整的路径,例如“ support / customer / abc”。另外,请确保您的名字和路线ID相同。
Codrain Technolabs Pvt Ltd,2016年

@YagneshPonkiya,目前我正面临着同样的问题,在这里我尝试使用上述代码在这里提出了问题,但我遇到了404页问题。
mageDev0688 '17

@Yagnesh如果我在客户/帐户/页面上,则菜单的类别为“当前”。但是,如果我在客户/帐户/编辑页面上,则“当前”类别不存在。你能帮我吗?我也想在菜单上为内部页面设置“当前”类。
Sejal Shah's

@YagneshPonkiya CMS页面怎么样?
Nitesh

2

您可以在自定义布局中编写

<referenceBlock name="customer-account-navigation-suppport-ticket-link">
                <arguments>
                    <argument name="current" xsi:type="boolean">true</argument>
                </arguments>
    </referenceBlock>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.