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>
Shyam
sumber
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.

Codrain Technolabs Pvt Ltd
sumber
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>
Semarak
sumber