0

After install extension I receive error. If I go to Sales -> Order => shipped order. If I go to new order it is ok.

Exception #0 (Exception): Notice: Undefined variable: secureRenderer in ....../app/code/Smartmage/Inpost/view/adminhtml/templates/order/view/info.phtml on line 34

line 34:

<?= /* @noEscape */ $secureRenderer->renderEventListenerAsTag(
            'onclick',
            "popWin('" . $block->escapeJs($shippingHelper->getTrackingPopupUrlBySalesModel($order)) .
            "','trackorder','width=800,height=600,resizable=yes,scrollbars=yes')",
            'a#linkId'
        ) ?>

info.phtml

<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */

/**
 * @var $block \Magento\Sales\Block\Adminhtml\Order\AbstractOrder
 * @var \Magento\Framework\View\Helper\SecureHtmlRenderer $secureRenderer
 */

/** @var \Magento\Shipping\Helper\Data $shippingHelper */
$shippingHelper = $block->getData('shippingHelper');
/** @var \Magento\Tax\Helper\Data $taxHelper */
$taxHelper = ($block->getData('taxHelper')) ? $block->getData('taxHelper') : $this->helper(Magento\Tax\Helper\Data::class);
?>
<?php $order = $block->getOrder() ?>
<?php if ($order->getIsVirtual()):
    return '';
endif; ?>

<?php /* Shipping Method */ ?>
<div class="admin__page-section-item order-shipping-method">
    <div class="admin__page-section-item-title">
        <span class="title"><?= $block->escapeHtml(__('Shipping &amp; Handling Information')) ?></span>
    </div>
    <div class="admin__page-section-item-content">
        <?php  if ($order->getTracksCollection()->count()): ?>
            <p>
                <a href="#" id="linkId" title="<?= $block->escapeHtmlAttr(__('Track Order')) ?>">
                    <?= $block->escapeHtml(__('Track Order')) ?>
                </a>
            </p>
            <?= /* @noEscape */ $secureRenderer->renderEventListenerAsTag(
                'onclick',
                "popWin('" . $block->escapeJs($shippingHelper->getTrackingPopupUrlBySalesModel($order)) .
                "','trackorder','width=800,height=600,resizable=yes,scrollbars=yes')",
                'a#linkId'
            ) ?>
        <?php endif; ?>
        <?php if ($order->getShippingDescription()): ?>
            <strong><?= $block->escapeHtml($order->getShippingDescription()) ?></strong>

            <?php if ($taxHelper->displayShippingPriceIncludingTax()): ?>
                <?php $_excl = $block->displayShippingPriceInclTax($order); ?>
            <?php else: ?>
                <?php $_excl = $block->displayPriceAttribute('shipping_amount', false, ' '); ?>
            <?php endif; ?>
            <?php $_incl = $block->displayShippingPriceInclTax($order); ?>

            <?= /** @noEscape */ $_excl ?>
            <?php if ($taxHelper->displayShippingBothPrices() && $_incl != $_excl): ?>
                (<?= $block->escapeHtml(__('Incl. Tax')) ?> <?= /** @noEscape */ $_incl ?>)
            <?php endif; ?>
        <?php else: ?>
            <?= $block->escapeHtml(__('No shipping information available')) ?>
        <?php endif; ?>
    </div>
    <?php
    $targetPoint = $order->getData('inpost_locker_id');
    if ($targetPoint): ?>
        <div class="admin__page-section-item-content">
            <br/>
            <?php echo __('Selected Paczkomat:') . ' ' . $block->escapeHtml($targetPoint); ?>
        </div>
    <?php endif; ?>
</div>

1 Answer 1

2

It seems your Magento version did not support $secureRenderer variable yet which available since Magento 2.4.0

$secureRenderer is an instance of \Magento\Framework\View\Helper\SecureHtmlRenderer class to render HTML elements with consideration to application security. So you can remove the implementation for $secureRenderer from the third-party extension to allow their code to work on your site. Remember to revert the changes once you upgrade your site to Magento version >=2.4.0

Line 34 in that file is exact the same as Magento core code (Shipping module) in Magento version >= 2.4.0:
https://github.com/magento/magento2/blob/2.4.0/app/code/Magento/Shipping/view/adminhtml/templates/order/view/info.phtml#L34

To remove the implementation for $secureRenderer from the third-party extension, replace the code in that file:

<p>
    <a href="#" id="linkId" title="<?= $block->escapeHtmlAttr(__('Track Order')) ?>">
        <?= $block->escapeHtml(__('Track Order')) ?>
    </a>
</p>
<?= /* @noEscape */ $secureRenderer->renderEventListenerAsTag(
    'onclick',
    "popWin('" . $block->escapeJs($shippingHelper->getTrackingPopupUrlBySalesModel($order)) .
    "','trackorder','width=800,height=600,resizable=yes,scrollbars=yes')",
    'a#linkId'
) ?>

with the following code (get from Magento 2.3.7-p3 and compatible with all Magento versions):

<p>
    <a href="#" id="linkId" onclick="popWin('<?= $block->escapeHtmlAttr($block->escapeJs($block->escapeUrl($this->helper(Magento\Shipping\Helper\Data::class)->getTrackingPopupUrlBySalesModel($order)))) ?>','trackorder','width=800,height=600,resizable=yes,scrollbars=yes')" title="<?= $block->escapeHtmlAttr(__('Track Order')) ?>">
        <?= $block->escapeHtml(__('Track Order')) ?>
    </a>
</p>
2
  • 1
    Working perfect. Thank you for help.
    – Tom
    Mar 16 at 13:14
  • Glad to help @Tom
    – Tu Van
    Mar 16 at 14:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.