system.xML ক্ষেত্র নির্ভরতা


16

সুতরাং আপনি system.xmlক্ষেত্রগুলির মধ্যে একটি ক্ষেত্রের মধ্যে একটি <depends>ট্যাগ যুক্ত করে ক্ষেত্রের মধ্যে নির্ভরতা নির্ধারণ করতে পারেন মডিউলটির ফাইল ।

<field1>
    ....
</field1>
<field2>
    ....
    <depends>
       <field1>1</field1>
    </depends>
</field2>

উপরের কোডটির অর্থ এটি field2যখন প্রদর্শিত হবে তখন এর মান field1হবে 1। আমি জানতে চাই কিভাবে / যদি আমি দেখানোর জন্য Magento বলতে পারেন field2যদি মান জন্য field1হয় 1বা 2?

উত্তর:


29

এটা চেষ্টা কর:

<depends>
    <field separator="|">
        <value>1|2|3</value>
    </field>
</depends>

আপনি কি জানেন যে এটি কাজ করে, বা আপনি কেবল এটি এখানে রেখে দিচ্ছেন?
বেনমার্কস

1
ডুড ... আমি জানি না কীভাবে, তবে এটি আসলে কাজ করে। এখন আমি আমার সমস্ত খারাপ কথার জন্য লজ্জিত এবং দুঃখিত, আমি কনফিগ বিভাগটি প্রয়োগকারী লোকদের কাছে বলেছিলাম। কোনও কারণে $dependent['separator']অ্যাট্রিবিউটের মান প্রদান করে separator। যার কাছে এটিকে কখনই নিম্নোক্ত করা হয়েছে, দয়া করে আপগ্রেট করুন (সম্ভব হলে দ্বিগুণ)। পুরোপুরি কাজ করে। ধন্যবাদ। সিসি @ বেনমার্কস
মারিয়াস

1
এই কাজ! = এটি একটি ভাল ধারণা হচ্ছে। আমি মনে করি আপনার শব্দের জন্য ক্ষমা চাওয়ার দরকার নেই :-D
বেনমার্কস

7

[Edit]

আমি নীচে আমার উত্তর ভুল ছিল। আমি এটি মুছে ফেলব না (এখনও) কারণ এটিতে আমার 7 টি আপগেট হয়েছিল :)। তবে আমি এটি সম্পাদনা করছি যাতে আপনারা সবাই আপনার ভোট প্রত্যাহার করার সুযোগ পান (এমনকি এটি ডাউনওয়েট করুন, কারণ আমি এটি প্রাপ্য)।

আসল উত্তর

হা! .. আমি এটি খুঁজে পেয়েছি।
সংক্ষিপ্ত উত্তর: আপনি পারবেন না!
দীর্ঘ উত্তর : কেউ যদি অ্যারে এবং একটি অবজেক্টের মধ্যে পার্থক্য জানত তবে আপনি এটি করতে সক্ষম হবেন।
তত্ত্বের ক্ষেত্রে এটি কাজ করা উচিত

<field1>
    ....
</field1>
<field2>
    ....
    <depends>
       <field1>
           <value>1|2</value>
           <separator>|</separator>
       </field1>
    </depends>
</field2>

কিন্তু যে কোডটি নির্ভরতা পরিচালনা করে, Mage_Adminhtml_Block_System_Config_Form::initFields366 লাইনের আশেপাশে এই কোড রয়েছে

if (isset($dependent['separator'])) {
    $dependentValue = explode((string)$dependent['separator'], $dependentValue);
}

$dependentসর্বদা একটি অবজেক্ট তাই $dependent['separator']সেট করা হয় না।
যদি আমি উপরের কোডটি পরিবর্তন করি

if (isset($dependent->separator)) {
    $dependentValue = explode((string)$dependent->separator, $dependentValue);
}

সবকিছু সুচারুভাবে কাজ করে।
আমার ধারণা আমি কেবল কোনও এক্সটেনশনের জন্য কোরটি পরিবর্তন করতে পারি না তাই আমাকে 1 এর পরিবর্তে 2 টি ক্ষেত্র তৈরি করতে হবে, প্রতিটি মানের field1জন্য একটি করে তৈরি করতে হবে বা এটি পরিচালনা করে এমন একটি কাস্টম জেএস তৈরি করতে হবে এবং এটি কনফিগার পৃষ্ঠায় যুক্ত করতে হবে।


2
ধুর! ছাই. আমি এই ধরণের বাগগুলি জানি :-) আমি আশা করি আপনি এটি রিপোর্ট করেছেন? দুর্দান্ত অন্তর্দৃষ্টি!
ফ্যাবিয়ান ব্ল্যাচসমিডট

1
ওহ মানুষ যে কিছু দুর্দান্ত তদন্ত আপনি কি নিশ্চিত যে আপনি শার্লক নন? এটি রিপোর্ট করার জন্য +1।
ডেভিড ম্যানার্স

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