Magento2 - কাস্টম নিয়ামক ত্রুটি ছুড়ে ফেলে


12

আমি এই পোস্টে প্রদর্শিত একটি মডিউল তৈরি করেছি । কিন্তু আমার নিজস্ব নিয়ামক কাজ করে না। আমি এই ত্রুটি বার্তা পেয়েছি:

পুনরুদ্ধারযোগ্য ত্রুটি: আর্গুমেন্ট 1 এমপিতে পাস হয়েছে \ মাইমডিউল \ কন্ট্রোলার \ সূচি \ চেকউজারনেম :: __ কনস্ট্রাক্ট () অবশ্যই ম্যাজেন্টো \ ফ্রেমওয়ার্ক \ অ্যাপ \ অ্যাকশন \ প্রসঙ্গের উদাহরণ হতে হবে, ম্যাজেন্টো \ ফ্রেমওয়ার্ক \ অবজেক্টম্যানেজার given অবজেক্টম্যানেজারের উদাহরণ দেওয়া হয়েছে : am xampp \ htdocs \ magento2 \ vendor \ magento \ ফ্রেমওয়ার্ক \ অবজেক্টম্যানেজার \ কারখানা \ AbstractFactory.php লাইনে 97 এবং ডি: \ xampp \ htdocs \ magento2 \ অ্যাপ \ কোড \ এমপি \ মাইমোডুলেক্স \ কন্ট্রোল \ 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";
    }    
}
 ?>

ভের / প্রজন্মের ফোল্ডারটি মুছে ফেলার পরে ত্রুটি বার্তা এখানে রয়েছে:

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}

1
@ ক্লাস এমপি আপনার __ কনস্ট্রাক্ট ফাংশনটিতে মন্তব্য করুন এবং তারপরে আবার যাচাই করুন। এবং আপনার ম্যাজেন্টো ভার দির থেকে প্রজন্মের ফোল্ডারটিও মুছুন
শাহির আলী

হাই শাহির দুর্ভাগ্যক্রমে সমস্যাটি সমাধান করেনি।
ClassMP

আপনি কি প্রজন্মের ফোল্ডারটি মুছলেন?
শাহির আলী

না। আপনি / var / প্রজন্মের ফোল্ডারটি বোঝাতে চান? প্রজন্মের ফোল্ডারে থাকা সামগ্রীগুলি কীভাবে উত্পন্ন হবে? আমার কি "ম্যাজেন্টো সেটআপ: ডি: কম্পাইল" দিয়ে পুনরায় সংকলন করা দরকার?
ClassMP

হ্যাঁ আমি বলতে চাইছি। এম 2 রান করার সময় কারখানার ফাইলগুলি জেনারেট করে। আপনার আর পুনরায়
সংকলনের

উত্তর:


18

নতুন সেন্টোস ডেভ পরিবেশে মডিউলটি স্থাপনের পরে, var / di এবং ভের / প্রজন্মের ফোল্ডারগুলি সরিয়ে দিন এবং পুনরায় সংযোগ করুন, এটি কাজ করে। এর আগে আমি উইন এক্সএম্প্প পরিবেশ ব্যবহার করেছি। এটি অনেক ঝামেলার কারণ ...


2
এই কাজটিকে নিশ্চিত করতে পারে, এটি একটি ব্যথা যা আপনাকে যখনই নতুন রুট যুক্ত করতে হয়
অ্যালেক্স

1
এটি কি সত্যিই কোনও সেন্টোস ইস্যু?
মীর

2
@ মীর এটি কোনও ওএস সমস্যা নয়। @ অ্যালেক্স আপনি যখনই নির্ভরতা ইনজেকশনটিতে কিছু পরিবর্তন করেন, আপনাকে কেবল php bin/magento setup:di:compileএই আদেশটি চালাতে হবে সবকিছুই করবে।
নাহিদ

7

আমি একই ইস্যু মধ্যে দৌড়ে। কয়েক ঘন্টা অর্থহীন ডিবাগিং এবং দেয়াল থেকে মাথা ঠেকানোর পরে আমি একটি সমাধান নিয়ে এসেছি যা আমার পক্ষে ভাল কাজ করেছে।

শেষ পর্যন্ত আমি উট-কেস থেকে সমস্ত ক্রিয়াকলাপের ফাইলের নাম এবং শ্রেণীর নামগুলি নামকরণ করেছি

থেকে:

ডি: \ XAMPP \ htdocs \ magento2 \ অ্যাপ্লিকেশন \ কোড \ এমপি \ MyModule \ কন্ট্রোলার \ ইনডেক্স \ CheckUserName.php

<?php
namespace MP\MyModule\Controller\Index;

class CheckUserName extends \Magento\Framework\App\Action\Action {
...
}

প্রতি:

ডি: \ XAMPP \ htdocs \ magento2 \ অ্যাপ্লিকেশন \ কোড \ এমপি \ MyModule \ কন্ট্রোলার \ ইনডেক্স \ Checkusername.php

class Checkusername extends \Magento\Framework\App\Action\Action {
...
}

এটির কি ম্যাজেন্টো 2 এর সর্বশেষ সংস্করণটির সাথে কিছু করার আছে? আমার কোনও সমস্যা ছাড়াই এটি আমার স্থানীয় পরিবেশে চলছে, তবে আমি যখন ডি কম্পাইলারটি চালাই তখন যখন সমস্যাটি আসে।
আভবি

এটির সার্ভার পরিবেশের সাথে কিছু করার আছে। আমার অভিজ্ঞতা থেকে, যখন আমি উইন্ডোজ (বা ম্যাক ইদানীং) তে মডিউল বিকাশ করি তবে উট-কেস ফাইলের নাম এবং শ্রেণীর নামগুলি নিয়ে আমার সমস্যা হয় না, তবে বেশিরভাগ লিনাক্স ডিস্ট্রোসের অধীনে আমি এই সমস্যাগুলিতে চলে যাই, তাই আমার পক্ষে আরও সহজ মনে হয় আমি আগে উল্লিখিত ফাইল এবং ক্লাসের নাম দিন।
ঝান কোলেভ

আমি নিশ্চিত যে সমস্যাটি উইন্ডোজকে দুর্বলভাবে টাইপ করা হয়েছে, যার অর্থ 'চেকউজারনেম.এফপি' উইন্ডোজটিতে 'চেকউজারনেম.এফপি' হিসাবে একই রকম আচরণ করা হয়। লিনাক্স অবশ্য দৃ strongly়ভাবে টাইপ করা হয় যার অর্থ 'CheckUserName.php' এবং 'Checkusername.php' দুটি সম্পূর্ণ ভিন্ন জিনিস। আমি সময়ে সময়ে একই সমস্যাগুলিতে চলে আসি কারণ আমি উইন্ডোতে আমার বিকাশ করি এবং সেন্টোস-এ পরীক্ষা করি।
মাইক লেভি

7

আপনার ম্যাজেন্টো মূল ডিরেক্টরি থেকে নিম্নলিখিত কমান্ডটি চালান:

php bin/magento setup:di:compile

এটি আবার নির্ভরতা ইনজেকশন (ডিআই) সংকলন করবে এবং, আপনার সমস্যাটি চলে যাবে।


আমি এই কমান্ডটি সফলভাবে চালিয়েছি, এবং এটি পুরো শপিং কার্ট উভয়ই অ্যাডমিনকে এবং ত্রুটির সাথে সামনের দিকে নিয়ে গিয়েছিল, "স্ট্রিমটি খুলতে ব্যর্থ হয়েছে: / var / www / html / mangento2 / বিক্রেতা / কলিনমোলেনহোর / ক্যাশে-ব্যাকএন্ডে অনুমতি অস্বীকার করা হয়েছে -ফাইল / ফাইল.এফপি.এডমিন এবং ফ্রন্টএন্ডে এটি একই ত্রুটি ছিল
ভেক্টরভোরটেক

তারপরে আমি আবার কমান্ডটি চালিয়েছি এবং শপিং কার্টের উভয় অংশই তাদের স্বাভাবিক আচরণে ফিরে এসেছিল।
ভেক্টরভোরটেক

0

আপনার নিয়ামক CheckUserName.phpফাইলটি নীচের মত দেখাচ্ছে

এমপি / MyModule / কন্ট্রোলার / ইনডেক্স / CheckUserName.php

<?php
namespace MP\MyModule\Controller\Index;

class CheckUserName extends \Magento\Framework\App\Action\Action
{

    /**
     * @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 Check username";
    }

}

ক্যাশে সাফ করুন

এর পরে আপনি নীচের URL টি ব্যবহার করে আপনার নিয়ামক অ্যাক্সেস করতে পারেন

http://192.168.0.52/m2ee/my_module/index/CheckUserName/ বা http://192.168.0.52/m2ee/index.php/my_module/index/CheckUserName/

দ্রষ্টব্য: আমার_মডিউলটি আমার মডিউলটির সামনের নাম আপনি এখানে আপনার সামনের নামটি প্রতিস্থাপন করতে পারেন।

নীচে ছবি দেখুন আমার পাশ কাজ করছে

এখানে চিত্র বর্ণনা লিখুন

এটি কাজ না করে থাকলে আমাকে জানান।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.