J'ai créé un module montré dans ce post. Mais mon propre contrôleur ne fonctionne pas. J'ai ce message d'erreur:
Erreur récupérable: l'argument 1 transmis à MP \ MyModule \ Controller \ Index \ CheckUserName :: __ construct () doit être une instance de Magento \ Framework \ App \ Action \ Context, instance de Magento \ Framework \ ObjectManager \ ObjectManager donnée, appelée dans D : \ xampp \ htdocs \ magento2 \ vendor \ magento \ framework \ ObjectManager \ Factory \ AbstractFactory.php sur la ligne 97 et défini dans D: \ xampp \ htdocs \ magento2 \ app \ code \ mp \ MyModule \ Controller \ Index \ CheckUserName. php en ligne 35
Voici mon code de contrôleur:
<?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";
}
}
?>
Voici les messages d'erreur après avoir supprimé le dossier 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
la source
la source
Réponses:
Après avoir déployé le module sur un nouvel environnement de développement CentOS, supprimez les dossiers var / di et var / generation et recompilez di, cela fonctionne. Avant cela, j'utilisais un environnement Win Xampp. Cela cause beaucoup de problèmes ...
la source
php bin/magento setup:di:compile
cette commande fera tout.Je suis tombé sur le même problème. Après quelques heures de débogage inutile et de me cogner la tête contre le mur, j'ai trouvé une solution qui fonctionnait bien pour moi.
À la fin, j'ai renommé tous les noms de fichiers d'action et les noms de classe de camel-case ie
De:
À:
la source
Depuis votre répertoire racine Magento, exécutez la commande suivante:
php bin/magento setup:di:compile
Cela compilera à nouveau l'injection de dépendance (DI) et votre problème disparaîtra.
la source
Votre
CheckUserName.php
fichier de contrôleur ressemble à ci-dessousMP / MyModule / Controller / Index / CheckUserName.php
vider le cache.
après cela, vous pouvez accéder à votre contrôleur en utilisant l' URL ci-dessous
http://192.168.0.52/m2ee/my_module/index/CheckUserName/ ou http://192.168.0.52/m2ee/index.php/my_module/index/CheckUserName/
Remarque: mon_module est le nom de devant de mon module, vous pouvez remplacer votre nom de front ici.
voir ci-dessous pic Mon côté ça marche
faites-moi savoir si cela ne fonctionne pas.
la source