Tambahkan tautan aktif khusus ke navigasi akun pelanggan di Magento 2


10

Saya mencoba menambahkan tautan khusus dalam navigasi akun pelanggan. Tautan kustom saya ditampilkan di navigasi akun dan berfungsi juga, tetapi tidak ditampilkan sebagai aktif / terkini saat klik.

masukkan deskripsi gambar di sini

Di bawah ini adalah kode yang saya miliki:

/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
Ubah jalur dari <argument name="path" xsi:type="string">support/customer/index</argument> ke<argument name="path" xsi:type="string">support/customer</argument>
— Codrain Technolabs Pvt Ltd

Beri tahu saya jika ini membantu
— Codrain Technolabs Pvt Ltd

@YagneshPonkiya. Terima kasih atas balasan cepat Anda. Ya itu bekerja. Masukkan komentar Anda sebagai jawaban agar saya dapat menerimanya.
— Shyam

@YagneshPonkiya. Juga, bisakah Anda memberi tahu saya apa masalahnya? Mengapa kita perlu mengubahnya? Terima kasih sebelumnya.
— Shyam

@ Syam, Sudahkah Anda menyelesaikan modul ini? Saya membuat fungsi yang sama di proyek M2 saya. Jadi, bisakah Anda membimbing saya bagaimana saya dapat membuat fungsi ini? Terima kasih
— mageDev0688

Jawaban:


23

Untuk menyelesaikannya, ubah jalur di file tata letak Anda seperti di bawah ini.

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

Harap dicatat, saya telah menghapus bagian tindakan dari string jalur.

Untuk informasi lebih lanjut, mengapa Anda perlu melakukan ini silakan pelajari file di bawah ini.

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

Semoga ini bisa membantu Anda.


Jika saya memiliki nama tindakan lain, bukan Index, maka tidak disebut ....
— Manish

jika Anda memiliki tindakan lain selain "indeks". Anda harus menggunakan path lengkap seperti "support / customer / abc". Pastikan juga nama depan dan rute Anda sama.
— Codrain Technolabs Pvt Ltd

@ YagneshPonkiya, saya menghadapi masalah yang sama saat ini dan saya telah mengajukan pertanyaan di sini saya telah mencoba dengan kode di atas tetapi saya mendapatkan masalah 404 halaman.
— mageDev0688

@ Yeshesh jika saya di pelanggan / akun / halaman maka menu memiliki kelas "saat ini". Namun jika saya berada di halaman pelanggan / akun / edit, kelas "saat ini" tidak ada. Bisakah kamu menolong? Saya ingin memiliki kelas "saat ini" pada menu untuk halaman internal juga.
— Sejal Shah

@YagneshPonkiya Bagaimana dengan halaman cms?
— Nitesh

2

Anda dapat menulis di tata letak khusus Anda

<referenceBlock name="customer-account-navigation-suppport-ticket-link">
                <arguments>
                    <argument name="current" xsi:type="boolean">true</argument>
                </arguments>
    </referenceBlock>
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.