System Config Multiselect par défaut tous sélectionnés

8

J'ai un champ de configuration système de type multiselect qui sera rempli à l'aide du catalog/product_attribute_collection. C'est une partie du system.xmlqui le définit.

  <attributes>
       <label>Choose Attributes to JSONize</label>
       <frontend_type>multiselect</frontend_type>
       <sort_order>3</sort_order>
       <show_in_default>1</show_in_default>
       <show_in_website>1</show_in_website>
       <show_in_store>1</show_in_store>

<source_model>package_module/system_config_attributes</source_model>
  </attributes>

Maintenant, je veux que toutes les valeurs de la multisélection soient sélectionnées par défaut. Étant donné que les valeurs par défaut de la configuration système sont définies dans le config.xml, je ne sais pas comment tout choisir par défaut.

Cette section config.xmlest pertinente pour la question

<default>
    <mytab>
        <mysection>
            <attributes><!-- ***WHAT SHOULD I WRITE HERE*** --></attributes>
        </mysection>
    </mytab>
</default>
Jay Ghosh
la source

Réponses:

6

Utilisez D ataScript pour stocker les données dans le module de configuration.

Comment créer un script de données

http://inchoo.net/magento/magento-install-install-upgrade-data-and-data-upgrade-scripts/

Dans Datascript, appelez simplement le module de configuration principal et enregistrez vos données

$myDynamicValue = '1,2,3';
Mage::getConfig()->saveConfig('section/group/field', $myDynamicValue, 'default', 0);
Priyank
la source
C'était une solution de contournement vraiment intelligente, et cela a fonctionné!
Jay Ghosh
3

Je donne un exemple multisélection.

<fields>
    <view_style translate="label">
        <label>Display Settings</label>
        <frontend_type>multiselect</frontend_type>
        <source_model>yourmodule/system_config_source_view</source_model>
        <sort_order>40</sort_order>
        <show_in_default>1</show_in_default>
    </view_style>
</fields>

créer un fichier pour l'option multisélection dans votre module dans ce chemin

your_namespace / yourmodel / Model / System / Config / Source / View.php

Ajoutez le code ci-dessous dans votre View.php

class YourNamespace_YourModule_Model_System_Config_Source_View 
{
    /**
     * Options getter
     *
     * @return array
     */
    public function toOptionArray()
    {
        return array(
            array('value' => 0, 'label' => Mage::helper('adminhtml')->__('Data1')),
            array('value' => 1, 'label' => Mage::helper('adminhtml')->__('Data2')),
            array('value' => 2, 'label' => Mage::helper('adminhtml')->__('Data3')),
        );
    }

    /**
     * Get options in "key-value" format
     *
     * @return array
     */
    public function toArray()
    {
        return array(
            0 => Mage::helper('adminhtml')->__('Data1'),
            1 => Mage::helper('adminhtml')->__('Data2'),
            3 => Mage::helper('adminhtml')->__('Data3'),
        );
    }
}
gelanivishal
la source
Votre réponse indique comment définir un modèle source. Je l'ai déjà fait. Je veux que toutes les valeurs du modèle source soient sélectionnées par défaut
Jay Ghosh
3
<default>
     <mytab>
        <mysection>
            <attributes><!-- ***WHAT SHOULD I WRITE HERE*** --></attributes>
        </mysection>
    </mytab>
</default>

Vous devez utiliser les clés séparées par des virgules de votre tableau d'options.

par exemple

<default>
     <mytab>
        <mysection>
            <attributes>0,1,3</attributes>
        </mysection>
    </mytab>
</default>

Sélectionne les trois options par défaut.

Geisel
la source
Oui mais comme je l'ai dit. Je ne connais pas les valeurs à l'avance pour écrire dans une chaîne séparée par des virgules. C'est dynamique
Jay Ghosh