Dodaj niestandardowe aktywne linki do nawigacji po koncie klienta w Magento 2

10

Próbuję dodać niestandardowy link w nawigacji konta klienta. Mój niestandardowy link jest wyświetlany w nawigacji konta i również działa, ale nie jest wyświetlany jako aktywny / bieżący po kliknięciu.

wprowadź opis zdjęcia tutaj

Poniżej znajduje się kod, który mam:

/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>
Shyam
źródło
6
Zmień ścieżkę z <argument name="path" xsi:type="string">support/customer/index</argument> na<argument name="path" xsi:type="string">support/customer</argument>
Codrain Technolabs Pvt Ltd
Daj mi znać, jeśli to pomoże
Codrain Technolabs Pvt Ltd
@YagneshPonkiya. Dziękuję za szybką odpowiedź. Tak, działa. Podaj swój komentarz jako odpowiedź, abym mógł zaakceptować.
Shyam,
@YagneshPonkiya. Czy możesz mi również powiedzieć, na czym polegał problem? Dlaczego musieliśmy to zmienić? Z góry dziękuję.
Shyam,
@Shyam, Czy ukończyłeś ten moduł? Tworzę tę samą funkcjonalność w moim projekcie M2. Czy mógłbyś więc mi pomóc, jak mogę stworzyć tę funkcjonalność? Dzięki
mageDev0688

Odpowiedzi:

23

Aby to zrobić, zmień ścieżkę w pliku układu, jak poniżej.

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

Uwaga: usunąłem część akcji z ciągu ścieżki.

Aby uzyskać więcej informacji, dlaczego musisz to zrobić, zapoznaj się z poniższym plikiem.

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

Mam nadzieję, że ci to pomoże.

Codrain Technolabs Pvt Ltd
źródło
Jeśli zamiast indeksu mam inną nazwę działania, nie wywołuje się ....
Manish
jeśli masz inną akcję niż „indeks”. powinieneś użyć pełnej ścieżki jak „wsparcie / klient / abc”. Upewnij się także, że nazwa użytkownika i identyfikator trasy są takie same.
Codrain Technolabs Pvt Ltd
@YagneshPonkiya, w tej chwili mam do czynienia z tym samym problemem i zadałem pytanie , próbowałem z powyższym kodem, ale otrzymuję problem z 404 stronami.
mageDev0688
@Yagnesh, jeśli jestem na kliencie / koncie / stronie, to menu ma klasę „bieżąca”. Jeśli jednak jestem na stronie klienta / konta / edycji, klasa „bieżąca” nie jest obecna. Możesz pomóc? Chcę mieć także „bieżącą” klasę w menu dla stron wewnętrznych.
Sejal Shah,
@YagneshPonkiya Co ze stroną cms?
Nitesh
2

Możesz pisać w niestandardowym układzie

<referenceBlock name="customer-account-navigation-suppport-ticket-link">
                <arguments>
                    <argument name="current" xsi:type="boolean">true</argument>
                </arguments>
    </referenceBlock>
Kwiecisty
źródło