Saya membuat modul yang ditunjukkan pada posting ini . Tapi controller saya sendiri tidak berfungsi. Saya mendapat pesan kesalahan ini:
Kesalahan yang Dapat Dipulihkan: Argumen 1 yang diteruskan ke MP \ MyModule \ Controller \ Index \ CheckUserName :: __ construct () harus merupakan instance dari Magento \ Framework \ App \ Action \ Context, instance dari Magento \ Framework \ ObjectManager \ ObjectManager yang diberikan, dipanggil dalam D : \ xampp \ htdocs \ magento2 \ vendor \ magento \ framework \ ObjectManager \ Factory \ AbstractFactory.php on line 97 dan didefinisikan dalam D: \ xampp \ htdocs \ magento2 \ app \ code \ mp \ MyModule \ Controller \ Index \ CheckUserName. php on line 35
Ini kode pengontrol saya:
<?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";
}
}
?>
Ini pesan kesalahan setelah menghapus folder 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}
sumber
Jawaban:
Setelah memasang modul pada lingkungan dev CentOS baru, hapus folder var / di dan var / generation dan kompilasi ulang di, ia berfungsi. Sebelum itu saya menggunakan lingkungan Win Xampp. Itu menyebabkan banyak masalah ...
sumber
php bin/magento setup:di:compile
perintah ini akan melakukan segalanya.Saya mengalami masalah yang sama. Setelah beberapa jam melakukan debugging yang tidak berguna dan membenturkan kepala saya dari dinding, saya menemukan solusi yang bekerja dengan baik untuk saya.
Pada akhirnya saya mengganti nama semua nama file tindakan dan nama kelas dari unta-case yaitu
Dari:
Untuk:
sumber
Dari direktori root Magento Anda jalankan perintah berikut:
php bin/magento setup:di:compile
Ini akan mengkompilasi Injeksi Ketergantungan (DI) lagi dan, masalah Anda akan hilang.
sumber
CheckUserName.php
File pengontrol Anda terlihat seperti di bawah iniMP / MyModule / Controller / Index / CheckUserName.php
bersihkan cache.
setelah itu Anda dapat mengakses controller Anda dengan menggunakan URL di bawah ini
http://192.168.0.52/m2ee/my_module/index/CheckUserName/ atau http://192.168.0.52/m2ee/index.php/my_module/index/CheckUserName/
Catatan: my_module adalah nama depan modul saya, Anda dapat mengganti nama depan Anda di sini.
lihat di bawah foto Sisi saya ini berfungsi
beri tahu saya jika itu tidak berhasil.
sumber