ম্যাজেন্টো 2 সিমলিঙ্কগুলি ব্যবহার করে মডিউলগুলি লিঙ্ক করার অনুমতি দেয় না


10

আমি প্রতীকী লিঙ্কগুলি ব্যবহার করে ম্যাজেন্টো 2-তে একটি স্থানীয় বিকাশ মডিউল (পৃথক গিট রেপো) যুক্ত করেছি এবং আমি পিএইচটিএমএল টেমপ্লেটগুলিতে আঘাত না করা পর্যন্ত এটি কার্যকর ছিল। ভারী ডিবাগিংয়ের পরে আমি জানতে পারি যে ম্যাজেন্টো 2 ফাইল সিস্টেম ক্লাস ( Magento\Framework\Filesystem\Directory\Read) পিএইচটিএমএল টেমপ্লেট বিদ্যমান কিনা তা দেখার জন্য isExists()একটি getAbsolutePath()কলের সাথে মিলিত একটি পদ্ধতি ব্যবহার করে । যাইহোক, getAbsolutePath()পদ্ধতিটি পরীক্ষা করে দেখায় যে ম্যাজেন্টো 2 ফাইল সিস্টেমের মধ্যে আপেক্ষিক পাথ বিদ্যমান এবং না থাকলে এটি ম্যাজেন্টো 2 রুটকে প্রিপেন্ড করে। এটা। আমার ক্ষেত্রে, ম্যাগনো একটি পৃথক রেপোতে /git/Aবাস করে যখন ম্যাজেন্টো বাস করে /site/Bএবং এই আচরণটি কোনও পিএইচএমএল টেমপ্লেটের অস্তিত্বের জন্য যাচাই করে /site/B/git/A

সংক্ষেপে: পিএইচটিএমএল টেমপ্লেটগুলি যা ম্যাজেন্টো 2 টি মূল ফাইল সিস্টেমের বাইরে থাকে সেগুলি সিস্টেম কনফিগারেশন সেটিং "সিমলিংকগুলিকে অনুমতি দিন" চালু করা সত্ত্বেও নেওয়া হয় না। দেখে মনে হচ্ছে সেটিংটি কাজ করছে, তবে কেবলমাত্র যদি সিমলিংকের উত্সটি এখনও ম্যাজেন্টো 2 ফাইল সিস্টেমের মধ্যে থাকে।

অন্য কেউ এর মুখোমুখি হয়েছে? কোন বাহ্যিক গিট রেপোতে উন্নয়নের হ্যান্ডেল করার সর্বোত্তম উপায় কী হবে?


50/50 বাগ / বৈশিষ্ট্য। আমি বলছি একটি সমস্যা ফাইল
বেনমার্ক

@ বেনমার্কগুলি এটি একটি সমস্যা হিসাবে চিহ্নিত সমস্যা হিসাবে পরিচিত, আমার উত্তর দেখুন
অ্যালেক্স পালিয়ারুশ

উত্তর:


9

আপনি যদি আপনার মডিউলটির জন্য সুরকার পথের সংগ্রহশালা ব্যবহার করছেন তবে হ্যাকিশের কাজ একচেটিয়া ।

পুস্তক registration.php:

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Module_Name',
    isset($file) ? dirname($file) : __DIR__
);

এটি আপনার মডিউলটিকে আসল পথের পরিবর্তে ম্যাজেন্টোর রুট বিক্রেতার dir এর সাথে সিমলিংকড পাথের নিবন্ধভুক্ত করবে।


1
এই সমাধানটি আমার পক্ষে কাজ করেছিল যতক্ষণ না আমি ম্যাজেন্টো ২.৩ এ আপগ্রেড করেছি (আমি 'অবৈধ টেম্পলেট ফাইল ...' ত্রুটি পাচ্ছি)। কোন সমাধান কীভাবে সমাধান করবেন?
পিনি

দুঃখিত, না। আপনি যখন সিমলিংক ব্যবহার করছেন না তখন আপনি কি নিশ্চিত যে এটি কাজ করে? যদি তাই হয় তবে আপনাকে কীভাবে এম 2.3 টেমপ্লেটগুলি লোড করছে তা ডিবাগ করতে হবে। অন্য একটি প্রশ্ন খুলতে পারে?
fsw

এটি সিমলিংক ছাড়াই কাজ করছে।
পিনি

আমি উন্নয়নের সময় ভ্যাগ্র্যান্ট ব্যবহার করি। আমি সিমবলিক লিঙ্ক /vagrant/app/code/Vendor/থেকে /var/www/shop/app/code/Vendor। এটি আমার জন্য এটি সমাধান!
বাগHunterUK

আমি ফিরে এসেছি. এই সমাধান কাজ করে না। যখন আমি এটি আমার মডিউল কোডটি সিমিলিং করতে ব্যবহার করি তখন আমার মডিউলটির প্রশাসনিক রুটগুলি কাজ করবে না। আমি এটি সিমলিংকটি সরিয়ে এবং অ্যাপ / কোড ডিরেক্টরিতে ফাইলগুলি অনুলিপি করে নিশ্চিত করেছি confirmed প্লাগইন তখন কাজ করে। আপনি এই মডিউলটি তৈরি করে এবং এটিকে সিমলিংক করে নিশ্চিত করতে পারেন: devdocs.magento.com/guides/v2.3/ext-best-practices/… ... আপনি আমার একই সমস্যা পেয়ে যাবেন।
বাগহান্টরেক

4

আপনার ডেভ রুটের দিকে ইঙ্গিত করার জন্য নিবন্ধকরণ.এফপিপি থেকেও এটিকে পরিচালনা করা উচিত।

এটি লোড হচ্ছে কিনা তা নিশ্চিত করার জন্য, আপনাকে আপনার বুটস্ট্র্যাপ প্রক্রিয়াতে কোথাও নিবন্ধকরণ.এফপি চালাতে হবে।

সবচেয়ে সহজ উপায় (এটি সুরকারের মাধ্যমে ইনস্টল না করে) হ'ল এটি ম্যানুয়ালিভাবে বিক্রেতা / সুরকার / অটোলোয়াড_ফিলস.এফপিতে যুক্ত করা।

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

=== আপডেট ===

এতক্ষণে আমি মডিউলটি লিখেছি: http://github.com/davidverholen/magento2-dynamic-comp घटक-registry

এছাড়াও আমি মনে করি আপেক্ষিক symlinks ব্যবহার করে মডিউলগুলি লিঙ্ক করা সম্ভব হওয়া উচিত


3

স্টোর => কনফিগারেশন => উন্নত => বিকাশকারী>> টেমপ্লেট সেটিংস (ম্যাজেন্টো ১.x এর মতো) এর মাধ্যমে প্রতিলিঙ্কগুলি সক্ষম / অনুমোদিত করা সম্ভব:

কনফিগারেশন বিকল্প

(এই সেটিংটি কাজ করে কিনা আমি পরীক্ষা করিনি)

এছাড়াও আপনি সাবমডিউলগুলি ব্যবহার করতে পারেন, এইভাবে আপনার সিমলিংকের প্রয়োজন নেই।

বিকাশের জন্য, আমি একটি পৃথক ডিরেক্টরিতে মডিউলগুলি বিকাশ করি এবং পিএইচপিএসটারম ব্যবহার করে সেগুলি আমার বিকাশের Magento 2 এ স্থাপন করতে অনুলিপি করি।


1
ধন্যবাদ। আমি যে সেটিংটির কথা উল্লেখ করেছি সেটি হ'ল "টেমপ্লেট সেটিংস" এর অধীনে "সিমলিংকের অনুমতি দিন" সেটিংস। এটি ম্যাজেন্টো 1.x এর অধীনে দুর্দান্তভাবে কাজ করে তবে এখন ম্যাজেন্টো 2 এর অধীনে ফাইলগুলি ম্যাজেন্টো মূলের মধ্যে থাকা দরকার, তাই কেবল ফাইল সিস্টেমে কোথাও নয়। যাইহোক, আমি ভাল থাকব - আমি সম্ভবত
সাবমডিউলগুলি

জিস, কেবল একটি চিন্তার ... আপনি যখন নিজের বিল্ডিং আর্টিফেক্টগুলি উত্পাদন করেন তখন আপনি আলাদা মডিউলগুলি একত্র করার জন্য সুরকারকেও ব্যবহার করতে পারেন, যা গিট সাবমোডিয়ুলগুলির সাথে চালিত হতে পারে এমন কিছু সমস্যা এড়াতে ঝোঁক দেয় যদিও এটি আপনার বিল্ডের জটিলতায় যোগ করতে পারে প্রক্রিয়া। আফাইক, পরিস্থিতি সামাল দেওয়ার এটিই ম্যাগেন্টোর প্রস্তাবিত উপায়।
ব্রায়ান 'বিজে' হফপাউয়ার জুনিয়র

ধন্যবাদ, পিএইচপিএসটারম বিকল্পগুলি এটি ইতিমধ্যে আমার জন্য সমাধান করেছে, তবে @ অ্যালেক্স-পালিউরুশ উল্লেখ করেছেন যে, কিছু পরিস্থিতি রয়েছে যেখানে কর্মক্ষেত্রটি কেবল কাজ করে না। আমি পরিবর্তে একটি PR যোগ করব।
Jisse Reitsma

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

3

যদি আপনি পিএইচপি স্টর্ম ব্যবহার করে বিকাশ করেন তবে কেবল দ্বিতীয় সংগ্রহস্থলটি ম্যাজেন্টো প্রকল্পের মূলটিতে অনুলিপি করুন। তারপরে মডিউল সক্ষম করতে প্রয়োজনীয় সিমলিংক তৈরি করুন। পিএইচপি ঝড় এই প্রকল্পটিকে বহুতল হিসাবে বিবেচনা করবে এবং উভয় ভান্ডারকেই স্বীকৃতি দেবে। আপনি সিঙ্ক্রোনাস এবং অ্যাসিনক্রোনাস (ডিফল্ট) সংগ্রহস্থল পরিচালনা কৌশলগুলির মধ্যে চয়ন করতে পারেন ।

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

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