تعتمد على عدم العمل في system.xml
-
12-12-2019 - |
سؤال
صنعت system.xml
الملف كما هو موضح أدناه وقم بتعيين كافة الحقول التي تعتمد عليها active
الحقل ولكن بعضها لا يعمل ويتم عرضه حتى active
المجال هو عاجز
system.xml
<fields>
<active translate="label">
<label>Enabled</label>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_yesno</source_model>
<sort_order>2</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</active>
<get_settings translate="label">
<label>Account Info</label>
<frontend_type>label</frontend_type>
<frontend_model>module/adminhtml_settings</frontend_model>
<sort_order>3</sort_order>
<show_in_default>1</show_in_default>
<depends><active>1</active></depends>
</get_settings>
<title translate="label">
<label>Title</label>
<frontend_type>text</frontend_type>
<sort_order>4</sort_order>
<show_in_default>1</show_in_default>
<depends><active>1</active></depends>
</title>
....
في الملف أعلاه get_settings
لا يعمل ولكن title
العمل كذلك!ما هو الفرق بينهما؟
وSettings.php في module/adminhtml_settings
class Name_Module_Block_Adminhtml_Settings extends Mage_Adminhtml_Block_System_Config_Form_Field
{
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
{
....
....
return $html;
}
}
ولكن لم تستخدم $element
في الرموز!
المحلول
لقد اختبرت للتو الكود الخاص بك ويبدو أنه يعمل بشكل جيد على title
التكوين.أنها لا تعمل على get_settings
config لأن Javascript الذي يعمل خلف الكواليس يتطلب أن يكون لديك حقل إدخال بالمعرف الصحيح.
لذا لكي يعمل هذا، سيتعين عليك إضافة حقل إدخال مخفي، ويمكن أن يكون حقل إدخال زائفًا إذا أردت، ولكن يجب أن يتبع المعرف إعدادات التكوين الخاصة بك، لذا أقترح عليك فحص العنصر في أحد حقول الإدخال الأخرى واتبع حذوه
للقيام بذلك فقط الخاص بك Settings.php
كالآتي:
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
{
$html = $element->getElementHtml();
$html .= '<input id="name_module_get_settings" name="groups[module_name][fields][titles][value]" value="" class=" input-text" type="hidden">';
/** do what ever you want here **/
return $html;
}
هذا كل شيء.تذكر أن العلامة التابعة تعمل فقط عندما يكون هناك حقل إدخال متاح في المصدر بالمعرف الصحيح.