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.