9

I working on creating custom module in magento 2, but it's not working. Could you please suggest me where i went wrong?.

My module code:

app/etc/config.php:

'modules' => 
 array (
 'Ramesh_Sample' => 1,
 ),

app/code/Ramesh/Sample/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="Ramesh_Sample" schema_version="2.0.0">
 </module>
</config>

app/code/Ramesh/Sample/etc/frontend/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="standard">
 <route id="sample" frontName="sample">
 <module name="Ramesh_Sample" />
 </route>
 </router>
</config>

app/code/Ramesh/Sample/Controller/Index/Index.php

<?php
namespace Ramesh\Sample\Controller\Index;
use Magento\Framework\App\Action\Context;
//use \Magento\Framework\View\Result\PageFactory;
class Index extends \Magento\Framework\App\Action\Action
{
 private $_resultPageFactory;
 public function __construct(
 Context $context,
 \Magento\Framework\View\Result\PageFactory $resultPageFactory
 )
 {
 parent::__construct($context);
 $this->_resultPageFactory = $resultPageFactory;
 }
 public function execute()
 {
 $result = $this->_resultPageFactory->create();
 return $result;
 }
}

app/code/Ramesh/Sample/Block/Sample.php

namespace Magento\Sample\Block;
class Sample extends \Magento\Framework\View\Element\Template
{
}

app/code/Ramesh/Sample/views/frontend/layout/sample_index_index.xml

<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="Sample\Ramesh\Block\Sample" name="sample" template="sample.phtml">
 </block>
 </referenceContainer>
 </body>
</page>

app/code/Ramesh/Sample/view/frontend/templates/sample.phtml

<?php echo 'Hi I am Magento 2'; ?>

But I got the following error:

a:4:{i:0;s:380:"Recoverable Error: Argument 2 passed to Ramesh\Sample\Controller\Index\Index::__construct() must be an instance of Magento\Framework\View\Result\PageFactory, none given, called in var/generation/Ramesh/Sample/Controller/Index/Index/Interceptor.php on line 14 and defined in app/code/Ramesh/Sample/Controller/Index/Index.php on line 14";i:1;s:6109:"#0 app/code/Ramesh/Sample/Controller/Index/Index.php(14): Magento\Framework\App\ErrorHandler->handler(4096, 'Argument 2 pass...', '/var/www/html/m...', 14, Array)

7ochem
7,61516 gold badges54 silver badges82 bronze badges
asked Aug 16, 2015 at 6:29
1

3 Answers 3

29

try to delete your module from the var/generation/vendor-name/your-module and try to refresh the page and check if it's working.

krupal patel
2151 gold badge2 silver badges7 bronze badges
answered Aug 26, 2015 at 1:27
4
  • Why do I have to delete the complete var/generation folder? Is there a faster process? Do I have to run bin/magento setup:di:compile every time? Commented Feb 17, 2016 at 20:49
  • 1
    You don't need to delete the complete var/generation folder try to identify your correct folder of your module Example : Demo /Module inside the var/generation .The code bin/magento setup:di:compile works only if you set the dependencies or code generation patterns set in di.xml Commented Feb 18, 2016 at 4:45
  • This has happened to me while working with controllers and I fixed it the same way, but can somebody explain why this happens in the first place? Commented Mar 5, 2017 at 23:52
  • tried the same above code and deleted files as mentioned but still showing error - HTTP ERROR 500, Commented Jul 27, 2019 at 6:34
10

You can use below mentioned command and then refresh the page.

php bin/magento setup:upgrade
Mukesh
1,4844 gold badges29 silver badges59 bronze badges
answered Jun 22, 2016 at 14:13
2
  • It worked for me Commented Dec 19, 2016 at 8:50
  • Great ;) Working for me Commented Oct 18, 2017 at 7:40
1

Replace code given below in your constructor

$this->_pageFactory = $pageFactory;
return parent::__construct($context);
Fabian Schmengler
66.2k25 gold badges191 silver badges422 bronze badges
answered Mar 18, 2017 at 20:21

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.