Додайте спеціальні активні посилання на навігацію по облікових записах клієнтів у Magento 2


10

Я намагаюся додати спеціальне посилання в навігації по обліковому запису клієнта. Моє спеціальне посилання відображається в навігації по обліковому запису та працює, але воно не відображається як активне / поточне при натисканні.

введіть тут опис зображення

Нижче наведений код у мене:

/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
Змініть шлях з <argument name="path" xsi:type="string">support/customer/index</argument> на<argument name="path" xsi:type="string">support/customer</argument>
Codrain Technolabs Pvt Ltd

Повідомте мене, чи допоможе це
Codrain Technolabs Pvt Ltd

@YagneshPonkiya. Дякуємо за швидку відповідь. Так, це працює. Поставте свій коментар як відповідь, щоб я міг прийняти.
Шям

@YagneshPonkiya. Також, чи можете ви мені сказати, в чому проблема? Чому нам потрібно було це змінити? Заздалегідь спасибі.
Shyam

@Shyam, Ви закінчили цей модуль? Я створюю таку ж функціональність у своєму проекті M2. Отже, чи не могли б ви підказати мені, як я можу створити цю функціональність? Спасибі
mageDev0688

Відповіді:


23

Щоб зробити це, будь ласка, змініть шлях у файлі макета, як показано нижче.

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

Зауважте, що я видалив частину дій із рядка шляху.

Для отримання додаткової інформації, чому вам потрібно це зробити, вивчіть файл нижче.

Magento \ Framework \ Вид \ Елемент \ Html \ Link \ Current.php

Сподіваюся, це вам допоможе.


Якщо у мене інше ім’я дії замість Index, то не називається ....
Manish

якщо у вас є інші дії, крім "індексу". ви повинні використовувати повний шлях на зразок "support / customer / abc". Також переконайтесь, що ваше ім'я та ідентифікатор маршруту однакові.
Codrain Technolabs Pvt Ltd

@YagneshPonkiya, я зараз стикаюся з тією ж проблемою, і я поставив тут питання, я спробував з вищевказаним кодом, але я отримую 404 сторінки.
mageDev0688

@Yagnesh, якщо я перебуваю на клієнті / рахунку / сторінці, тоді меню має клас "поточний". Однак якщо я перебуваю на сторінці клієнтів / акаунтів / редагувань, "поточного" класу немає. Ви можете допомогти? Я хочу мати в меню "поточний" клас і для внутрішніх сторінок.
Sejal Shah

@YagneshPonkiya Що про сторінку cms?
Нітеш

2

Ви можете писати у власному макеті

<referenceBlock name="customer-account-navigation-suppport-ticket-link">
                <arguments>
                    <argument name="current" xsi:type="boolean">true</argument>
                </arguments>
    </referenceBlock>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.