Fügen Sie der Kundenkontonavigation in Magento 2 benutzerdefinierte aktive Links hinzu


10

Ich versuche, einen benutzerdefinierten Link in die Navigation des Kundenkontos einzufügen. Mein benutzerdefinierter Link wird in der Kontonavigation angezeigt und funktioniert auch, wird jedoch beim Klicken nicht als aktiv / aktuell angezeigt.

Geben Sie hier die Bildbeschreibung ein

Unten ist der Code, den ich habe:

/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/Namespace/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
Ändern Sie den Pfad von <argument name="path" xsi:type="string">support/customer/index</argument> zu<argument name="path" xsi:type="string">support/customer</argument>
Codrain Technolabs Pvt Ltd

Lassen Sie mich wissen, ob es hilft
Codrain Technolabs Pvt Ltd

@YagneshPonkiya. Vielen Dank für Ihre schnelle Antwort. Ja, es funktioniert. Geben Sie Ihren Kommentar als Antwort ein, damit ich ihn akzeptieren kann.
Shyam

@YagneshPonkiya. Können Sie mir bitte auch sagen, wo das Problem lag? Warum mussten wir das ändern? Danke im Voraus.
Shyam

@Shyam, hast du dieses Modul abgeschlossen? Ich erstelle die gleiche Funktionalität in meinem M2-Projekt. Könnten Sie mir bitte zeigen, wie ich diese Funktionalität erstellen kann? Danke
mageDev0688

Antworten:


23

Um die Dinge zu erledigen, ändern Sie bitte den Pfad in Ihrer Layoutdatei wie unten.

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

Bitte beachten Sie, dass ich den Aktionsteil aus der Pfadzeichenfolge entfernt habe.

Für weitere Informationen, warum Sie dies tun müssen, lesen Sie bitte die folgende Datei.

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

Hoffe, das wird dir helfen.


Wenn ich einen anderen Aktionsnamen anstelle von Index habe, wird dieser nicht aufgerufen ....
Manish

wenn Sie eine andere Aktion als "Index" haben. Sie sollten den vollständigen Pfad wie "support / customer / abc" verwenden. Stellen Sie außerdem sicher, dass Ihr Frontname und Ihre Routen-ID identisch sind.
Codrain Technolabs Pvt Ltd

@YagneshPonkiya, ich bin vor im Moment gleiches Problem , und ich habe gestellte Frage hier ich mit dem obigen Code versucht habe , aber ich bin 404 - Seite Problem bekommen.
mageDev0688

@Yagnesh Wenn ich auf Kunde / Konto / Seite bin, dann hat das Menü die Klasse "aktuell". Wenn ich mich jedoch auf der Kunden- / Konto- / Bearbeitungsseite befinde, ist die "aktuelle" Klasse nicht vorhanden. Kannst du helfen? Ich möchte auch für interne Seiten eine "aktuelle" Klasse im Menü haben.
Sejal Shah

@YagneshPonkiya Was ist mit cms Seite?
Nitesh

2

Sie können in Ihrem benutzerdefinierten Layout schreiben

<referenceBlock name="customer-account-navigation-suppport-ticket-link">
                <arguments>
                    <argument name="current" xsi:type="boolean">true</argument>
                </arguments>
    </referenceBlock>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.