2

I am trying to display something when click on a link from admin menu. So i created a simple module and when i click from the admin menu it redirect to mydomain/secure-manage/helloworld/index/index/key/... with status 200 but the page is blank.

In devtool i can see the css and js are loaded but nothing inside the body tag.

1.folder structure

Inchoo
 Helloworld

  -Block
    -Adminhtml
      Helloworld.php

  -Controller
    -Adminhtml
      -Index
        Index.php

  -etc
    -module.xml
    -adminhtml
      -menu.xml
      -routes.xml

  -view
     adminhtml
      layout
       -helloworld_index_index.xml
      templates
       -helloworld.phtml

  registration.php

2.Block/Adminhtml/Helloworld.php

<?php
 namespace Inchoo\Helloworld\Block;
 class Helloworld extends \Magento\Framework\View\Element\Template
 {
   public function getHelloWorldTxt()
   {
    return 'Hello world!';
   }
 }

3.Controller/Adminhtml/Index/Index.php

<?php

 namespace Inchoo\Helloworld\Controller\Adminhtml\Index;

 use Magento\Framework\App\Action\Context;

 class Index extends \Magento\Framework\App\Action\Action
 {
   protected $_resultPageFactory;

   public function __construct(Context $context, 
   \Magento\Framework\View\Result\PageFactory $resultPageFactory)
   {
     $this->_resultPageFactory = $resultPageFactory;
     parent::__construct($context);
   }

   public function execute()
   {
     $resultPage = $this->_resultPageFactory->create();
     // print_r($resultPage);exit;
     return $resultPage;
    }
 }

4.etc/module.xml

<?xml version="1.0"?>

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/
module.xsd">
  <module name="Inchoo_Helloworld" setup_version="1.0.0">
  </module>
</config>

5.etc/adminhtml/menu.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Backend:etc
/menu.xsd">
  <menu>
    <add id="Inchoo_Helloworld::first_pincollect_pincheck"
         title="Greetings"
         module="Inchoo_Helloworld"
         sortOrder="50"
         dependsOnModule="Inchoo_Helloworld"
         resource="Magento_Backend::content" />

    <add id="Inchoo_Helloworld::second_pincollect_pincheck"
         title="Manage Pincodes"
         module="Inchoo_Helloworld"
         sortOrder="0"
         action="helloworld/index"
         parent="Inchoo_Helloworld::first_pincollect_pincheck"
         resource="Magento_Backend::content" />
  </menu>
</config>

6.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="helloworld" frontName="helloworld">
        <module name="Inchoo_Helloworld" />
    </route>
  </router>
</config>

7.view/adminhtml/layout/helloworld_index_index.xml

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="../../../../../../../lib/
internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" 
layout="1column">
  <body>
    <referenceContainer name="content">
        <block class="Inchoo\Helloworld\Block\Adminhtml\Helloworld" 
        name="helloworld" template="helloworld.phtml" />
    </referenceContainer>
  </body>
</page>

8.view/adminhtml/templates/helloworld.phtml

<p>Hello World!</p>

how can i debug this, please help me guys.

Thanks in advance.

2
  • have you run deploy and cache flush command from cli Jan 17, 2018 at 8:43
  • Hi Bachcha Singh, tried but no luck. Jan 17, 2018 at 9:27

3 Answers 3

3

I am giving you the exact code and path please copy and paste the below file.

app/code/Inchoo/Helloworld/registration.php

<?php

    \Magento\Framework\Component\ComponentRegistrar::register(
        \Magento\Framework\Component\ComponentRegistrar::MODULE,
        'Inchoo_Helloworld',
        __DIR__
    );

app/code/Inchoo/Helloworld/Block/Adminhtml/Index/Index.php

<?php

    namespace Inchoo\Helloworld\Block\Adminhtml\Index;

    class Index extends \Magento\Backend\Block\Widget\Container
    {



        public function __construct(\Magento\Backend\Block\Widget\Context $context,array $data = [])
        {
            parent::__construct($context, $data);
        }



    }

app/code/Inchoo/Helloworld/Controller/Adminhtml/Index/Index.php

<?php

    namespace Inchoo\Helloworld\Controller\Adminhtml\Index;


    class Index extends \Magento\Backend\App\Action
    {
        public function execute()
        {
            $this->_view->loadLayout();
            $this->_view->getLayout()->initMessages();
            $this->_view->renderLayout();
        }
    }

    ?>

app/code/Inchoo/Helloworld/etc/module.xml

<?xml version="1.0"?>
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd">
        <module name="Inchoo_Helloworld" setup_version="1.0.0"></module>
            <sequence>
                <module name="Magento_Backend"/>
                 <module name="Magento_Sales"/>
                <module name="Magento_Quote"/>
                <module name="Magento_Checkout"/>
            </sequence>
    </config>

app/code/Inchoo/Helloworld/etc/adminhtml/routes.xml

<?xml version="1.0"?>
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/App/etc/routes.xsd">
        <router id="admin">
            <route id="helloworld" frontName="helloworld">
                <module name="Inchoo_Helloworld" before="Magento_Adminhtml" />
            </route>
        </router>
    </config>

app/code/Inchoo/Helloworld/etc/adminhtml/menu.xml

<?xml version="1.0"?>
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../Magento/Backend/etc/menu.xsd">
        <menu>
            <add id="Inchoo_Helloworld::parent" title="Helloworld" module="Inchoo_Helloworld" sortOrder="100" resource="Inchoo_Helloworld::parent"/>
            <add id="Inchoo_Helloworld::index" title="Helloworld Index" module="Inchoo_Helloworld" sortOrder="10" action="helloworld/index" resource="Inchoo_Helloworld::index" parent="Inchoo_Helloworld::parent"/>

        </menu>
    </config>

app/code/Inchoo/Helloworld/view/adminhtml/layout/helloworld_index_index.xml

<?xml version="1.0"?>
    <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
        <head>
            <title>Hello World</title>
        </head> 
        <body>
            <referenceContainer name="content">
                <block class="Inchoo\Helloworld\Block\Adminhtml\Index\Index" name="helloworld_block_adminhtml_index_index"  template="Inchoo_Helloworld::helloworld_index_index.phtml" />
            </referenceContainer>
        </body>
    </page>

app/code/Inchoo/Helloworld/view/adminhtml/templates/helloworld_index_index.phtml

<?php echo "Hello World template"; ?>

N:B After put all the files to the specific path don't forget to run this command from CLI -

php bin/magento setup:upgrade

php bin/magento cache:flush
1
  • My Pleasure..... @ Vivek. Feel free to like this answer. Jan 17, 2018 at 10:48
0

First correct your folder structure name, Like

 Inchoo
    Helloworld
        -Block
          -Adminhtml
              Helloworld.php

        -Controller
            -Adminhtml
                 -Index
                    -Index.php
        -etc
            -module.xml
            -adminhtml
                -menu.xml
                -routes.xml

       -view
           -adminhtml        
               -layout
                     -helloworld_index_index.xml
               -templates
                     -helloworld.phtml

      -registration.php
1
  • hi rishabh, i corrected the structure like updated in the question but still not working. Jan 17, 2018 at 8:11
0

i was also facing the same issue Magento 2.3 CE. I gave the proper permissions for var and pub directories and ran the following commands-

  • provided file permission for var/ and pub/
  • setup:upgrade
  • setup:static-content:deploy -f
  • cache:flush

and it started to work.

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.