3

I'm new to Magento 2.3, I'm getting an error when I hit Add New Banner button, Grid is loading perfectly, error appear when i try to open form, I don't know how to resolve this, BTW I copied this module and may be the module was running on Magento 2.1.

ERROR IMAGE

enter image description here

Code for /PHPCuong/BannerSlider/Block/Adminhtml/Banner/Edit/GenericButton.php

<?php

namespace PHPCuong\BannerSlider\Block\Adminhtml\Banner\Edit;

use Magento\Framework\View\Element\UiComponent\Context;
use Magento\Framework\View\Element\UiComponent\Control\ButtonProviderInterface;

/**
 * Class GenericButton
 */
class GenericButton implements ButtonProviderInterface
{
    /**
     * @var Context
     */
    protected $context;

    /**
     * @var \Magento\Framework\AuthorizationInterface
     */
    protected $_authorization;

    /**
     * @param Context $context
     * @param \Magento\Framework\AuthorizationInterface $authorization
     */
    public function __construct(
        Context $context,
        \Magento\Framework\AuthorizationInterface $authorization
    ) {
        $this->context = $context;
        $this->_authorization = $authorization;
    }

    /**
     * Return the Banner ID
     *
     * @return int
     */
    public function getBannerId()
    {
        return (int)$this->context->getRequest()->getParam('id');
    }

    /**
     * Generate url by route and parameters
     *
     * @param   string $route
     * @param   array $params
     * @return  string
     */
    public function getUrl($route = '', $params = [])
    {
        return $this->context->getUrlBuilder()->getUrl($route, $params);
    }

    /**
     * {@inheritdoc}
     */
    public function getButtonData()
    {
        return [];
    }

    /**
     * Check permission for passed action
     *
     * @param string $resourceId
     * @return bool
     */
    protected function _isAllowedAction($resourceId)
    {
        return $this->_authorization->isAllowed($resourceId);
    }
}

2 Answers 2

1

GetUrl has been rewritten slightly

https://github.com/magento/magento2/blob/2.3-develop/lib/internal/Magento/Framework/View/Element/UiComponent/Context.php#L364

   /**
     * @inheritdoc
     */
    public function getUrl($route = '', $params = [])
    {
        return $this->urlBuilder->getUrl($route, $params);
    }

Safest option would be to match this and inject @param UrlInterface $urlBuilder

You might even be able to simply use

return $this->context->getUrl($route, $params);

1

I made some changes as follows and now it works for magento 2.4.1. Hope that helps

Code for /PHPCuong/BannerSlider/Block/Adminhtml/Banner/Edit/GenericButton.php

made changes to get id parameter from _request

/**
 * @param Context $context
 * @param \Magento\Framework\AuthorizationInterface $authorization
 */
public function __construct(
    Context $context,
    \Magento\Framework\AuthorizationInterface $authorization,
    \Magento\Framework\Webapi\Rest\Request $request  //<-- added 
) {
    $this->context = $context;
    $this->_authorization = $authorization;
    $this->_request = $request;  // <--added
}



 /**
 * Return the Group ID
 *
 * @return int
 */
public function getGroupId()
{
    //return (int)$this->context->getRequest()->getParam('id');
    return (int)$this->_request->getParams('id');  //<-- changed
}

Your Answer

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

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