customer_account.xml
view/frontend/layout/customer_account.xml
<?xml version="1.0"?>
<!--
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->
<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="Maijindou\Customer\Model\Current" name="customer-account-invoices-link">
<arguments>
<argument name="path" xsi:type="string">maijindousales/invoice/index</argument>
<argument name="label" xsi:type="string" translate="true">Invoices</argument>
<argument name="sortOrder" xsi:type="number">190</argument>
</arguments>
</block>
</referenceBlock>
</body>
</page>
Maijindou\Customer\Model\Current
<?php
namespace Maijindou\Customer\Model;
use Magento\Customer\Block\Account\SortLinkInterface;
use Magento\Customer\Model\Session;
use Magento\Framework\App\DefaultPathInterface;
use Magento\Framework\View\Element\Template\Context;
class Current extends \Magento\Framework\View\Element\Html\Link\Current implements SortLinkInterface
{
private $session;
private $public_path = [
'customer/account/edit',
'maijindousales/buyer',
'customer/address',
'vendorattribute/account/customfields',
'helpdesk/ticket',
'message'
];
public function __construct(
Context $context,
Session $session,
DefaultPathInterface $defaultPath,
array $data = [])
{
$this->session = $session;
parent::__construct($context, $defaultPath, $data);
}
public function _toHtml()
{
$wkv_mjd_company_approved = $this->session->getCustomer()->getData('wkv_mjd_company_approved');
if ($wkv_mjd_company_approved == 'approved') {
return parent::_toHtml();//全部显示
} else {
if(in_array($this->getPath(),$this->public_path)){
return parent::_toHtml();//显示的部分URL
}else{
return '';//不显示
}
}
}
/**
* {@inheritdoc}
*/
public function getSortOrder()
{
return $this->getData(self::SORT_ORDER);
}
}