Aggiungi collegamenti attivi personalizzati alla navigazione dell'account cliente in Magento 2


10

Sto cercando di aggiungere un collegamento personalizzato nella navigazione dell'account cliente. Il mio collegamento personalizzato viene visualizzato anche nella navigazione dell'account e funziona, ma non viene visualizzato come attivo / corrente al clic.

inserisci qui la descrizione dell'immagine

Di seguito è riportato il codice che ho:

/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
Cambia il percorso da <argument name="path" xsi:type="string">support/customer/index</argument> a<argument name="path" xsi:type="string">support/customer</argument>
Codrain Technolabs Pvt Ltd,

Fammi sapere se aiuta
Codrain Technolabs Pvt Ltd,

@YagneshPonkiya. Grazie per la tua rapida risposta. Sì, funziona. Inserisci il tuo commento come una risposta in modo che io possa accettare.
Shyam,

@YagneshPonkiya. Inoltre, puoi dirmi qual è stato il problema? Perché abbiamo dovuto cambiarlo? Grazie in anticipo.
Shyam,

@Shyam, hai completato questo modulo? Sto creando la stessa funzionalità nel mio progetto M2. Quindi, potresti guidarmi per favore come posso creare questa funzionalità? Grazie
mago Dev0688,

Risposte:


23

Per fare ciò, si prega di cambiare il percorso nel file di layout come di seguito.

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

Si noti che ho rimosso la parte azione dalla stringa del percorso.

Per ulteriori informazioni, perché è necessario farlo, si prega di studiare sotto il file.

Magento \ Framework \ Visualizza \ elemento \ Html \ link \ Current.php

Spero che questo ti possa aiutare.


Se ho un altro nome di azione invece di Index, allora non posso chiamarlo ....
Manish

se hai altre azioni diverse da "indice". dovresti usare un percorso completo come "support / customer / abc". Assicurati anche che il tuo nome e ID percorso siano gli stessi.
Codrain Technolabs Pvt Ltd,

@YagneshPonkiya, sto affrontando lo stesso problema al momento e ho posto una domanda qui ho provato con il codice sopra ma sto ricevendo un problema di 404 pagine.
mageDev0688

@Yagnesh se sono su cliente / account / pagina, il menu ha la classe "corrente". Tuttavia, se sono sulla pagina cliente / account / modifica, la classe "corrente" non è presente. Puoi aiutare? Voglio avere una classe "corrente" nel menu anche per le pagine interne.
Sejal Shah,

@YagneshPonkiya Che mi dici della pagina cms?
Nitesh,

2

Puoi scrivere nel tuo layout personalizzato

<referenceBlock name="customer-account-navigation-suppport-ticket-link">
                <arguments>
                    <argument name="current" xsi:type="boolean">true</argument>
                </arguments>
    </referenceBlock>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.