Я создал модуль, показанный в этом посте. Но мой собственный контроллер не работает. У меня есть это сообщение об ошибке:
Исправимая ошибка: Аргумент 1, переданный в MP \ MyModule \ Controller \ Index \ CheckUserName :: __ construct (), должен быть экземпляром Magento \ Framework \ App \ Action \ Context, задан экземпляр Magento \ Framework \ ObjectManager \ ObjectManager, вызываемый в D : \ xampp \ htdocs \ magento2 \ vendor \ magento \ framework \ ObjectManager \ Factory \ AbstractFactory.php в строке 97 и определяется в D: \ xampp \ htdocs \ magento2 \ app \ code \ mp \ MyModule \ Controller \ Index \ CheckUserName. PHP на линии 35
Вот мой код контроллера:
<?php
namespace MP\MyModule\Controller\Index;
class CheckUserName extends \Magento\Framework\App\Action\Action
{
protected $_logger;
protected $_objectManager;
protected $_request;
/*
\Psr\Log\LoggerInterface $logger, //log injection
\Magento\Framework\App\Request\Http $request
$this->_logger = $logger;
$this->_logger->debug('CheckUserName_Constructor_Begin');
$this->_request = $request;
$this->_logger->debug('CheckUserName_Constructor_End');
*/
/**
* @var \Magento\Framework\View\Result\PageFactory
*/
protected $resultPageFactory;
/**
* @param \Magento\Framework\App\Action\Context $context
* @param \Magento\Framework\View\Result\PageFactory resultPageFactory
*/
public function __construct(
\Magento\Framework\App\Action\Context $context,
\Magento\Framework\View\Result\PageFactory $resultPageFactory
)
{
parent::__construct($context);
$this->resultPageFactory = $resultPageFactory;
}
public function execute()
{
echo "Hello from Checkusername";
}
}
?>
Вот сообщения об ошибках после удаления папки var / generation:
Warning: ltrim() expects parameter 1 to be string, object given in D:\xampp\htdocs\magento2\vendor\magento\framework\Code\Generator\EntityAbstract.php on line 152
Notice: Uninitialized string offset: 0 in D:\xampp\htdocs\magento2\vendor\magento\framework\Autoload\ClassLoaderWrapper.php on line 81
Notice: Uninitialized string offset: 0 in D:\xampp\htdocs\magento2\vendor\composer\ClassLoader.php on line 317
Notice: Uninitialized string offset: 0 in D:\xampp\htdocs\magento2\vendor\composer\ClassLoader.php on line 349 exception 'Magento\Framework\Exception\LocalizedException' with message 'Source class "" for "Magento\Framework\App\Response\Http\Interceptor" generation does not exist.' in D:\xampp\htdocs\magento2\vendor\magento\framework\Code\Generator.php:171 Stack trace: #0 D:\xampp\htdocs\magento2\vendor\magento\framework\Code\Generator.php(100): Magento\Framework\Code\Generator->tryToLoadSourceClass('Magento\\Framewo...', Object(Magento\Framework\Interception\Code\Generator\Interceptor))
#1 D:\xampp\htdocs\magento2\vendor\magento\framework\Code\Generator\Autoloader.php(35): Magento\Framework\Code\Generator->generateClass('Magento\\Framewo...')
#2 [internal function]: Magento\Framework\Code\Generator\Autoloader->load('Magento\\Framewo...')
#3 D:\xampp\htdocs\magento2\vendor\magento\framework\ObjectManager\Factory\AbstractFactory.php(105): spl_autoload_call('Magento\\Framewo...')
#4 D:\xampp\htdocs\magento2\vendor\magento\framework\ObjectManager\Factory\Compiled.php(88): Magento\Framework\ObjectManager\Factory\AbstractFactory->createObject('Magento\\Framewo...', Array)
#5 D:\xampp\htdocs\magento2\vendor\magento\framework\ObjectManager\Factory\Compiled.php(130): Magento\Framework\ObjectManager\Factory\Compiled->create('Magento\\Framewo...')
#6 D:\xampp\htdocs\magento2\vendor\magento\framework\ObjectManager\Factory\Compiled.php(67): Magento\Framework\ObjectManager\Factory\Compiled->get('Magento\\Framewo...')
#7 D:\xampp\htdocs\magento2\vendor\magento\framework\ObjectManager\ObjectManager.php(57): Magento\Framework\ObjectManager\Factory\Compiled->create('Magento\\Framewo...', Array)
#8 D:\xampp\htdocs\magento2\vendor\magento\framework\App\Bootstrap.php(233): Magento\Framework\ObjectManager\ObjectManager->create('Magento\\Framewo...', Array)
#9 D:\xampp\htdocs\magento2\index.php(38): Magento\Framework\App\Bootstrap->createApplication('Magento\\Framewo...')
#10 {main}
magento2
controllers
ClassMP
источник
источник
Ответы:
После развертывания модуля в новой среде разработки CentOS, удаления папок var / di и var / generation и перекомпиляции di, он работает. До этого я использовал среду Win Xampp. Это вызывает много проблем ...
источник
php bin/magento setup:di:compile
эту команду, и все будет сделано.Я столкнулся с той же проблемой. После нескольких часов бессмысленной отладки и удара головой о стену, я нашел решение, которое хорошо сработало для меня.
В конце я переименовал все имена файлов действий и имена классов из Camel-Case, т.е.
Из:
Для того, чтобы:
источник
Из корневого каталога Magento выполните следующую команду:
php bin/magento setup:di:compile
Это снова скомпилирует Dependency Injection (DI), и ваша проблема исчезнет.
источник
Ваш
CheckUserName.php
файл контроллера выглядит как нижеMP / MyModule / Controller / Index / CheckUserName.php
очистить кеш.
после этого вы можете получить доступ к вашему контроллеру, используя ниже URL
http://192.168.0.52/m2ee/my_module/index/CheckUserName/ или http://192.168.0.52/m2ee/index.php/my_module/index/CheckUserName/
Примечание: my_module - это имя моего модуля, вы можете заменить его здесь.
см. ниже рис Моя сторона это работает
дайте мне знать, если это не работает.
источник