Agregue enlaces activos personalizados a la navegación de la cuenta del cliente en Magento 2


10

Estoy tratando de agregar un enlace personalizado en la navegación de la cuenta del cliente. Mi enlace personalizado se muestra en la navegación de la cuenta y también funciona, pero no se muestra como activo / actual al hacer clic.

ingrese la descripción de la imagen aquí

A continuación se muestra el código que tengo:

/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>

66
Cambiar el camino de <argument name="path" xsi:type="string">support/customer/index</argument> a<argument name="path" xsi:type="string">support/customer</argument>
— Codrain Technolabs Pvt Ltd

Avíseme si ayuda
— Codrain Technolabs Pvt Ltd

@YagneshPonkiya. Gracias por tu rápida respuesta. Si, esta funcionando. Pon tu comentario como respuesta para que pueda aceptar.
— Shyam

@YagneshPonkiya. Además, ¿puede decirme cuál fue el problema? ¿Por qué necesitábamos cambiar eso? Gracias por adelantado.
— Shyam

@Shyam, ¿Has completado este módulo? Estoy creando la misma funcionalidad en mi proyecto M2. Entonces, ¿podría guiarme cómo puedo crear esta funcionalidad? Gracias
— mageDev0688

Respuestas:


23

Para hacer las cosas, cambie la ruta en su archivo de diseño como se muestra a continuación.

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

Tenga en cuenta que he eliminado la parte de acción de la cadena de ruta.

Para obtener más información, por qué necesita hacer esto, estudie el archivo a continuación.

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

Espero que esto te ayudará.


Si tengo otro nombre de acción en lugar de Index, entonces no se llama ...
— Manish

si tiene otra acción que no sea "index". debe usar la ruta completa como "support / customer / abc". También asegúrese de que su nombre de usuario y su ID de ruta sean los mismos.
— Codrain Technolabs Pvt Ltd

@YagneshPonkiya, estoy enfrentando el mismo problema en este momento y he puesto una pregunta aquí. He intentado con el código anterior pero estoy recibiendo un problema de 404 páginas.
— mageDev0688

@Yagnesh si estoy en cliente / cuenta / página, entonces el menú tiene la clase "actual". Sin embargo, si estoy en la página cliente / cuenta / editar, la clase "actual" no está presente. ¿Puede usted ayudar? Quiero tener una clase "actual" en el menú para páginas internas también.
— Sejal Shah

@YagneshPonkiya ¿Qué pasa con la página de cms?
— Nitesh

2

Puedes escribir en tu diseño personalizado

<referenceBlock name="customer-account-navigation-suppport-ticket-link">
                <arguments>
                    <argument name="current" xsi:type="boolean">true</argument>
                </arguments>
    </referenceBlock>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.