Magento 2 Class * কারখানার অস্তিত্ব নেই


15

আমি একটি প্লাগইন ইনস্টল করার চেষ্টা করছিলাম এবং আমি ভেরি / জেনারেশন এবং ভার / ক্যাশে / * সরিয়েছি। আমি এমএক্সএমএমইডি পরীক্ষা করেছি এবং আমি বিকাশকারীর মধ্যে রয়েছি কিন্তু এখন যখন আমি সম্মুখ-প্রান্ত এবং প্রশাসককে অ্যাক্সেস করি তখন আমি এলোমেলো ত্রুটি পেয়ে যাচ্ছি যার অর্থ: Class Magento\Customer\Model\CustomerFactory does not exist

ক্লাস ম্যাজেন্টো les বিক্রয় \ মডেল \ রিসোর্সমোডেল \ প্রতিবেদন \ অর্ডারফ্যাক্টরি বিদ্যমান নেই

কিছু ক্লাস তৈরি করা হচ্ছে, তবে সব নয়। আমি আবার ক্যাশে এবং প্রজন্মের ফোল্ডারটি সাফ করার চেষ্টা করেছি তবে আমি ঠিক একই ত্রুটিগুলি পেয়েছি।

কোন ধারনা?


1
ভেরি / প্রজন্মের ফোল্ডারে অধিকারগুলি পরীক্ষা করুন
মারিয়াস

এটি drwxrwxrw- 5 বলেছে
jstrez77

আমাকে কয়েক বার ভেরি / জেনারেশন ফোল্ডার পরিষ্কার করতে হয়েছিল, প্রথমে হোম পেজে যেতে হবে, পরিষ্কার, তারপরে অ্যাডমিন, তারপরে লগইন, তারপর পরিষ্কার ... এবং এটি কাজ করেছে ... ?? আমি এটি বুঝতে পারি না
jstrez77

অবশ্যই 'var / ਪੀੜ੍ਹੀ' ফোল্ডারের মধ্যে অনুমতি রয়েছে।
ট্র্যাভিস ভ্যান ডের ফন্ট 15 '

উত্তর:


21

Magento 2 var/generationডিরেক্টরিতে কারখানার ক্লাস তৈরি করে । সুতরাং, যদি সেই ডিরেক্টরিটিতে ফোল্ডারের অনুমতি সংক্রান্ত সমস্যা বা ফোল্ডার মালিকের সমস্যা থাকে তবে কারখানার শ্রেণি তৈরি করা যায় না এবং আপনি যেমন ত্রুটি পান।

আপনি যখন var/generationডিরেক্টরিটি সাফ করেন এবং এতে উপযুক্ত অনুমতি সেট করেন তখন এই ত্রুটিটি সমাধান করা উচিত।

ম্যাজেন্টো 2- তে কোড জেনারেশনে আরও দেখুন


এটাও হতে পারে var/diবা var/cacheদেখতে devdocs.magento.com/guides/v2.2/install-gde/trouble/...
Yvan

10

আমার জন্য, আমি var/generationফোল্ডারটি সরিয়েছি তখন আমি দৌড়েছি magento setup:di:compileযা সমস্ত প্রয়োজনীয় ক্লাস তৈরি করেছে।

(আমার ক্ষেত্রে: তারপরে আমার সাথে ক্যাশে সমস্যা হয়েছিল, আমি প্রাথমিক ক্যাশে ফোল্ডারটি সরিয়ে দিয়েছি))

তারপরে এটি আমার সমস্যা সমাধান করেছে। চিয়ার্স !!


1
শেষে ফাইলের মালিক পরিবর্তন করা দরকার
মোশির বিরি

5

২.২.২ এর মতো এবং তার উপরে এই কোড জেনারেশনের নতুন সংস্করণে পরিবর্তিত হয়েছে

<Magento root folder>/generated

সুতরাং আপনাকে এই ফোল্ডারের জন্যও অনুমতি পরীক্ষা করতে হবে। আপনাকে Magento ইনস্টলেশন ডিরেক্টরিটির মূলে নিম্নলিখিত কমান্ডটি চালাতে হবে এই সমস্যাটি সমাধান করবে:

sudo chmod -R 777 generated/

শুরুতে পরিষ্কার ক্যাশে
হাসান আলী শাহজাদ

এটি আমার জন্য কাজ
ম্যাটিনিকট

1

নিম্নলিখিত কমান্ডগুলি কার্যকর করা প্রয়োজন:

sudo php -f bin/magento setup:di:compile 

sudo rm -rf pub/static/*/*; sudo rm -rf var/*/*; 
sudo php -f bin/magento setup:static-content:deploy -f  

sudo php bin/magento cache:clean

এছাড়াও, যথাযথ অনুমতি প্রয়োজন। যদি উত্পাদন হয়, আপনার যথাযথ অনুমতিগুলি কার্যকর করতে হবে। তবে, স্থানীয় মেশিনে, আপনি সম্পূর্ণ অনুমতি চালাতে পারেন:

sudo chmod -R 777 *

1

7 777 অনুমতি দিন এবং উত্পন্ন / কোড ফোল্ডারের www- ডেটাতে মালিকানা পরিবর্তন করুন এবং তারপরে কমান্ডটি sudo php bin/magento setup:di:compileসাফ করুন ক্যাশে চালান এবং আপনার সমস্যার সমাধান হয়ে উঠতে পারে


1

এটি কেবল <magento-root>/var/ফোল্ডারের অনুমতি ইস্যু।

সিএলআই মোড ব্যবহার করে নীচের কমান্ডটি কার্যকর করুন

sudo chmod -R 777 var/

0

ম্যাজেন্টো 2 var/generationফোল্ডারে কারখানার ক্লাস তৈরি করে এবং আপনি যদি নিজের কোনও নতুন পরামিতি যুক্ত করেন __construct()এবং এটির কারখানার শ্রেণিটি বিদ্যমান না থাকে তবে ম্যাজেন্টো 2 উপরের ত্রুটি বার্তাটি ছুঁড়ে দেয়। যদিও আপনার প্রশ্নের ইতিমধ্যে কয়েকটি সমাধান ইতিমধ্যে দেওয়া হয়েছে, আমি আপনাকে অন্য একটি সমাধানের পরামর্শ দিতে পারি যার জন্য আপনার প্রজন্মের ফোল্ডারটি সাফ করার প্রয়োজন হয় না। কারখানা ক্লাস সম্পর্কিত কোনও পরিবর্তন হওয়ার পরে দয়া করে নীচের কমান্ডটি ব্যবহার করুন:

bin/magento setup:di:compile

এই আদেশটি উত্পাদন সার্ভারে আরও কার্যকর হতে পারে।


-2

ক্লাস ... কারখানার অস্তিত্ব নেই মানে আপনার মডেল শ্রেণি লোড হয়নি। মডেলাল প্রোগ্রামিংয়ের উপর ভিত্তি করে ম্যাজেন্টো 2 হিসাবে তাই আমাদের মডেল শ্রেণি নির্দিষ্ট করতে হবে যেখানে আমরা স্পষ্টভাবে ব্যবহার করতে চাই। আমরা আমাদের মডেল ক্লাসটি দুটি প্রকারে ব্যবহার করতে পারি:

1. "ব্যবহার" দ্বারা

use Magento\Customer\Setup\CustomerSetupFactory;

public function __construct(CustomerSetupFactory $customerSetupFactory)
{
    $this->customerSetupFactory = $customerSetupFactory;
}
  1. সরাসরি

    public function __construct(Magento\Customer\Setup\CustomerSetupFactory $customerSetupFactory){
    
    $this->customerSetupFactory = $customerSetupFactory;
    
    }

যখন আপনি ব্রাউজারে আপনার প্লাগইনটির ইউআরএল ( http://domain.com/yur মডিউল সম্মুখ নাম) টি চাপুন তখন মাগেন্তো নীচের মত আপনার মডিউলটির কোড উত্পন্ন করার চেয়ে:

\var\generation\Your Vendor Directory\Your Module Directory\Controller
\var\generation\Your Vendor Directory\Your Module Directory\Model

আপনার ক্ষেত্রে আপনার "কাস্টমারফ্যাক্টরি" পরীক্ষা করা দরকার এবং "অর্ডারফ্যাক্টরি" উপরের ফর্ম্যাট হিসাবে ব্যবহৃত হয় বা নেই।

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