2

I have succesfully added a new admin menu. But the problem is whenever i clicked the admin menu button, I got Invalid security or form key. Please refresh the page.

Here're some of my codes.

This is my menu.xml

     <add id="Testing_Basic::menu_item" title="Manage Items" module="Testing_Basic" sortOrder="10" parent="Testing_Basic::menu" action="Webpage/Create/Index" resource="Testing_Basic::menu_item"/>

And this is my directories looks like.

enter image description here

enter image description here

This is my

Controller/Adminhtml/Webpage/Index.php

<?php
/**
* Webkul Grid Controller
*
* @category    Webkul
* @package     Webkul_Grid
* @author      Webkul Software Private Limited
*
*/
namespace Testing\Basic\Controller\Adminhtml\Webpage;

class Index extends \Magento\Backend\App\Action
{
/**
 * @var \Magento\Framework\View\Result\PageFactory
 */
protected $_resultPageFactory;

/**
 * @param \Magento\Backend\App\Action\Context        $context
 * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
 */
public function __construct(
    \Magento\Backend\App\Action\Context $context,
    \Magento\Framework\View\Result\PageFactory $resultPageFactory
)
{
    parent::__construct($context);
    $this->_resultPageFactory = $resultPageFactory;
}

/**
 * Grid List page.
 *
 * @return \Magento\Backend\Model\View\Result\Page
 */
public function execute()
{
    /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
    $resultPage = $this->_resultPageFactory->create();
    $resultPage->setActiveMenu('Testing_Basic::grid_list');
    $resultPage->getConfig()->getTitle()->prepend(__('Grid List'));

    return $resultPage;
}

/**
 * Check Grid List Permission.
 *
 * @return bool
 */
    protected function _isAllowed()
    {
        return $this->_authorization->isAllowed('Testing_Basic::grid_list');
    }
  }

And this is my routes.xml

    <?xml version="1.0"?>
    <!--
    /**
    * Webkul_Grid route xml
    *
    * @category    Webkul
    * @package     Webkul_Grid
    * @author      Webkul Software Private Limited
    *
    */
    -->
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
     <router id="admin">
       <route id="create" frontName="create">
       <module name="Testing_Basic" />
       </route>
       </router>
    </config>
6
  • Answer is here magento.stackexchange.com/questions/301930/…
    – Msquare
    Commented Feb 19, 2020 at 3:28
  • Please add your index controller and routes.xml file code also. Commented Feb 19, 2020 at 4:35
  • @Msquare thanks. I tried following your tutorial but I stuck in blank page. There's no side menu whenever I clicked the button.
    – Daniel_C
    Commented Feb 19, 2020 at 18:47
  • @KishorThummar added my routes and index controller
    – Daniel_C
    Commented Feb 19, 2020 at 18:56
  • Show your error here
    – Msquare
    Commented Feb 20, 2020 at 3:24

3 Answers 3

4

add code in menu.xml

 <add 
    id="Testing_Basic::item" 
    title="Manage Items" 
    module="Testing_Basic" 
    sortOrder="10" 
    parent="Testing_Basic::menu" 
    action="create/webpage/index" 
    resource="Testing_Basic::item"
    />

etc/adminhtml/routes.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
    <router id="admin">
        <route id="create" frontName="create">
            <module name="Testing_Basic" />
        </route>
    </router>
</config>

and controler file path like

/Controller/Adminhtml/Webpage/Index.php

<?php
namespace Testing\Basic\Controller\Adminhtml\Webpage;

use Magento\Framework\App\Action\HttpGetActionInterface as HttpGetActionInterface;
use Magento\Backend\App\Action\Context;
use Magento\Framework\View\Result\PageFactory;
use Magento\Backend\App\Action;
class Index extends Action implements HttpGetActionInterface
{
    /**
     * @var PageFactory
     */
    protected $resultPageFactory;

    /**
     * @param Context $context
     * @param PageFactory $resultPageFactory
     */
    public function __construct(
        Context $context,
        PageFactory $resultPageFactory
    ) {
        parent::__construct($context);
        $this->resultPageFactory = $resultPageFactory;
    }

    /**
     * Index action
     *
     * @return \Magento\Backend\Model\View\Result\Page
     */
    public function execute()
    {
        $resultPage = $this->resultPageFactory->create();
        $resultPage->setActiveMenu('Testing_Basic::item');
        $resultPage->addBreadcrumb(__('Grid List'), __('Grid List'));
        $resultPage->addBreadcrumb(__('Manage Grid'), __('Manage Grid'));
        $resultPage->getConfig()->getTitle()->prepend(__('Grid List'));

        return $resultPage;
    }
}

hope this help you. :)

3
  • Thanks its finally not showing the error. Just realize that I put "s" in my controller. But I must be missing something because the button is redirecting to blank page now.
    – Daniel_C
    Commented Feb 19, 2020 at 18:12
  • added my index controller code..
    – Daniel_C
    Commented Feb 19, 2020 at 18:33
  • thanks. It's finally showing up. Thanks for the help
    – Daniel_C
    Commented Feb 20, 2020 at 16:34
1

It might help someone, Today, I faced the same issue Magento ver. 2.3.5 none of the above methods works for me: Then I checked the module controller and found this code :

 /**
     * {@inheritdoc}
     */
    public function _isAllowed()
    {
        return $this->_authorization->isAllowed('Mymodule_Test::Test');
    }

Solution: Update Users Role from admin and it will resolve the issue.

0

I had this issue in Magento 2.4.0. The reason was because the module folder was not correctly named. For example: the name should have been DemoModule and the incorrect name was ModuleDemo.

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.