Как удалить / отключить кнопку редактирования в блоке информации об адресе на странице сведений о заказе клиента - PullRequest
0 голосов
/ 02 апреля 2019

В соответствии с определенным статусом заказа, я хочу ограничить пользователя, чтобы он вносил изменения в адрес заказа, например

Я хочу отключить или удалить кнопку редактирования из адреса выставления счета и доставки из блока информации об адресе

Пожалуйста, проверьте изображение ниже

https://i.stack.imgur.com/2BoFC.png

1 Ответ

0 голосов
/ 15 апреля 2019

Прежде всего, вам нужно найти шаблон, отвечающий за эту часть страницы «Просмотр заказа».Вы можете сделать это, включив отладку шаблона в Admin-Stores-Configuration-Advanced-Developer-Debug

Это шаблон, который нам нужен - vendor / magento / module-sales / view /adminhtml / templates / order / view / info.phtml

В строках 172 и 181 у нас есть Edit link render

<div class="actions"><?= /* @noEscape */ $block->getAddressEditLink($order->getBillingAddress()); ?></div>

Так что я предлагаю - переопределить этот шаблон и добавить к немуViewModel для обработки вашей пользовательской логики.Я сделаю это в моем модуле - Vendor: Perspective, Name: SalesOrderCustomization

Создать макет для переопределения шаблона - app / code / Perspective / SalesOrderCustomization / view / adminhtml / layout / sales_order_view.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="order_info"
                        template="Perspective_SalesOrderCustomization::order/view/info.phtml">
            <arguments>
                <argument name="view_model"
                          xsi:type="object">\Perspective\SalesOrderCustomization\ViewModel\Order\View\Info</argument>
            </arguments>
        </referenceBlock>
    </body>
</page>

Скопируйте info.phtml в пользовательский модуль app / code / Perspective / SalesOrderCustomization / view / adminhtml / templates / order / view / info.phtml

Изменить шаблон.Добавьте в начале (для меня это строки 30-31):

/** @var \Perspective\SalesOrderCustomization\ViewModel\Order\View\Info $viewModel */
$viewModel = $block->getData('view_model');

Изменить Изменить ссылку рендеринга:

/* Lines 175-177 */    
<?php if ($viewModel->isAddressEditAvailable($order->getStatus())): ?>
    <div class="actions"><?= /* @noEscape */ $block->getAddressEditLink($order->getBillingAddress()); ?></div>
<?php endif; ?>

/* Lines 186-188 */
<?php if ($viewModel->isAddressEditAvailable($order->getStatus())): ?>
    <div class="actions"><?= /* @noEscape */ $block->getAddressEditLink($order->getShippingAddress()); ?></div>
<?php endif; ?>

И наша ViewModel:

<?php


namespace Perspective\SalesOrderCustomization\ViewModel\Order\View;


use Magento\Framework\View\Element\Block\ArgumentInterface;

class Info implements ArgumentInterface
{
    /**
     * @param string $orderStatus
     * @return bool
     */
    public function isAddressEditAvailable($orderStatus)
    {
        if ($orderStatus === $this->getNotEditableStatus()) {
            return false;
        }
        return true;
    }

    protected function getNotEditableStatus()
    {
        return 'complete';  /* todo: replace with Admin Configuration */
    }
}

Также добавьте необходимые файлы (etc / modelu.xml, registration.php).

Следующим шагом будет очистить кеш, включить модуль, выполнить обновление настроек и скомпилировать (при необходимости).

PS: Вы должны заменить статическое состояние объявить на Admin - Меню конфигурации (выбрать или множественный выбор).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...