Erreur de modèle source personnalisé de configuration du système
-
13-12-2019 - |
Question
J'essaie de créer une section de configuration système avec des valeurs de champs personnalisées
Voici mon code :
système.xml
<?xml version="1.0"?>
<config>
<tabs>
<macerierconf translate="label">
<label>Macerier</label>
<sort_order>150</sort_order>
</macerierconf>
</tabs>
<sections>
<tab1 translate="label" module="adminhtml">
<label>Settings</label>
<tab>macerierconf</tab>
<sort_order>100</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<groups>
<smssending translate="label comment">
<label>test label</label>
<sort_order>60</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<fields>
<device translate="label comment">
<label>Device</label>
<frontend_type>select</frontend_type>
<source_model>macerier_test/system_config_source_dropdown_values</source_model>
<sort_order>30</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>0</show_in_website>
<show_in_store>0</show_in_store>
</device>
</fields>
</smssending>
</groups>
</tab1>
</sections>
</config>
config.xml
<?xml version="1.0"?>
<config>
<modules>
<Macerier_TEST>
<version>0.1.0</version>
</Macerier_TEST>
</modules>
<global>
<models>
<macerier_test>
<class>Macerier_TEST_Model</class>
</macerier_test>
</models>
</global>
</config>
puis dans
Macerier\TEST\Model\System\Config\Source\Dropdown\Values.php
J'ai ceci:
<?php
class Macerier_TEST_Model_System_Config_Source_Dropdown_Values
{
public function toOptionArray()
{
return array(
array(
'value' => 'key1',
'label' => 'Value 1',
),
array(
'value' => 'key2',
'label' => 'Value 2',
),
);
}
}
et j'obtiens cette erreur :
Erreur fatale PHP :Appel à une fonction membre toOptionArray() sur un non-objet dans /home/user/public_html/magento/app/code/core/Mage/Adminhtml/Block/System/Config/Form.php à la ligne 463
Je suis sûr que je fais quelque chose de mal ici car sans le modèle source personnalisé, le module fonctionne.
La solution
La liste déroulante ne peut pas l'obtenir Modèle source
macerier_test/system_config_source_dropdown_values
c'est pourquoi il affiche l'erreur
Peut-être que vous n'avez pas défini le préfixe du modèle.
Selon votre code macerier_test
.est le préfixe des modèles
Alors définissons le préfixe du modèle à config.xml
config.xml
<?xml version="1.0"?>
<config>
<modules>
<Macerier_TEST>
<version>0.1.0</version>
</Macerier_TEST>
</modules>
<!-- add this -->
<global>
<models>
<macerier_test> <!-- call as model prefix identifier -->
<class>Macerier_TEST_Model</class>
</macerier_test>
</models>
</global>
</config>