0

Getting below error while clicking on edit action from Grid.

Fatal error: Uncaught Error: Call to a member function getUrl() on null in /var/www/html/myproject/machpack/app/code/Vendor/Module/Block/Adminhtml/Module/Edit/Button/Generic.php:60 Stack trace: #0 /var/www/html/myproject/machpack/app/code/Vendor/Module/Block/Adminhtml/Module/Edit/Button/Delete.php(38): Vendor\Module\Block\Adminhtml\Module\Edit\Button\Generic->getUrl('//delete', Array) #1 /var/www/html/myproject/machpack/app/code/Vendor/Module/Block/Adminhtml/Module/Edit/Button/Delete.php(28): Vendor\Module\Block\Adminhtml\Module\Edit\Button\Delete->getDeleteUrl() #2 /var/www/html/myproject/magento236/vendor/magento/framework/View/Element/UiComponent/Context.php(285): Vendor\Module\Block\Adminhtml\Module\Edit\Button\Delete->getButtonData() #3 /var/www/html/myproject/machpack/vendor/magento/module-ui/Component/AbstractComponent.php(116): Magento\Framework\View\Element\UiComponent\Context->addButtons(Array, Object(Magento\Ui\Component\Form)) #4 /var/www/html/myproject/mac in /var/www/html/myproject/machpack/app/code/Vendor/Module/Block/Adminhtml/Module/Edit/Button/Generic.php on line 60

Generic.php

<?php
namespace Vendor\Module\Block\Adminhtml\Module\Edit\Button;
use Magento\Search\Controller\RegistryConstants;
/**
 * Class Generic
 */
class Generic
{
 /**
 * Url Builder
 *
 * @var \Magento\Framework\UrlInterface
 */
 protected $urlBuilder;
 /**
 * Registry
 *
 * @var \Magento\Framework\Registry
 */
 protected $registry;
 /**
 * Constructor
 *
 * @param \Magento\Backend\Block\Widget\Context $context
 * @param \Magento\Framework\Registry $registry
 */
 public function __construct(
 \Magento\Backend\Block\Widget\Context $context,
 \Magento\Framework\Registry $registry
 ) {
 $this->urlBuilder = $context->getUrlBuilder();
 $this->registry = $registry;
 }
 /**
 * Return the synonyms group Id.
 *
 * @return int|null
 */
 public function getId()
 {
 $contact = $this->registry->registry('Module');
 return $contact ? $contact->getId() : null;
 }
 /**
 * Generate url by route and parameters
 *
 * @param string $route
 * @param array $params
 * @return string
 */
 public function getUrl($route = '', $params = [])
 {
 return $this->urlBuilder->getUrl($route, $params);
 }
}
Denish Vachhani
4,5523 gold badges17 silver badges47 bronze badges
asked Jan 5, 2021 at 11:14
1
  • Show code for Generic.php Commented Jan 5, 2021 at 11:17

1 Answer 1

1

Try this in your Generic.php file

<?php
namespace Vendor\Module\Block\Adminhtml\ControllerName\Edit;
use Magento\Backend\Block\Widget\Context;
use Magento\Cms\Api\PageRepositoryInterface;
use Magento\Framework\Exception\NoSuchEntityException;
/**
 * Class Generic
 */
class Generic
{
 /**
 * @var Context
 */
 protected $context;
 /**
 * @var PageRepositoryInterface
 */
 protected $pageRepository;
 /**
 * @param Context $context
 */
 public function __construct(
 Context $context,
 PageRepositoryInterface $pageRepository
 ) {
 $this->context = $context;
 $this->pageRepository = $pageRepository;
 }
 /**
 * Return CMS block ID
 *
 * @return int|null
 */
 
 /**
 * 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);
 }
 
}
answered Jan 5, 2021 at 11:20
2
  • your code worked correctly. but i still not get where i was making mistake? Commented Jan 5, 2021 at 11:28
  • Compare getUrl method of both Commented Jan 5, 2021 at 11:47

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

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

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.