Question

Je suis nouveau sur Magento et je souhaite définir la vue du magasin après la connexion en fonction de l'utilisateur. L'utilisateur peut sélectionner une vue de magasin lors de l'enregistrement et celle-ci est stockée en tant qu'attribut EAV dans la base de données.

Mon script d'installation:

<?php
$installer = $this;
$installer->startSetup();
$setup = Mage::getModel('customer/entity_setup', 'core_setup');
$setup->addAttribute('customer', 'default_store_view_code', array(
    'type' => 'varchar',
    'input' => 'select',
    'label' => 'Default Store View',
    'global' => 1,
    'visible' => 1,
    'required' => 1,
    'user_defined' => 1,
    'default' => '',
    'visible_on_front' => 1,
    'source' => 'ModuleName/source_storeViewCode'
));


Mage::getSingleton('eav/config')
    ->getAttribute('customer', 'default_store_view_code')
    ->setData('used_in_forms', array('adminhtml_customer','customer_account_create','customer_account_edit','checkout_register'))
    ->save();

$installer->endSetup();
?>

usage_in_forms n'est pas configuré pour le moment. Mon problème: lorsque j'essaie de montrer les détails de mon client dans le backend Magento, j'obtiens l'erreur:

AVERTISSEMENT: include (mage / modulename / modèle / source / storeViewCode.php): Échec de l'ouverture du flux: aucun fichier ou répertoire de ce type

'source' => 'NameSpace/ModuleName/source_storeViewCode'

et

'source' => 'NameSpace_ModuleName/source_storeViewCode'

n'a pas fonctionné non plus. Il essaie de se charger de l'espace de noms Mage. Comment puis-je le régler sur mon espace de noms?

Mon source_model est situé dans local / namespace / modulename / modèle / source / storeviewcode.php.

PS: mon config.xml de mon module

<?xml version="1.0"?>
<config>
    <modules>
        <NameSpace_ModuleName>
            <version>1.0.0</version>
        </NameSpace_ModuleName>
    </modules>

    <global>
        <blocks>
            <customer>
                <rewrite>
                    <form_register>NameSpace_ModuleName_Block_Form_Register</form_register>
                </rewrite>
            </customer>
        </blocks>
        <resources>
            <ModuleName_setup>
                <setup>
                    <module>NameSpace_ModuleName</module>
                    <class>NameSpace_ModuleName_Model_Resource_Setup</class>
                </setup>
            </ModuleName_setup>
        </resources>
    </global>

    <frontend>
        <routers>
            <customer>
                <args>
                    <modules>
                        <moduleName before="Mage_Customer">NameSpace_ModuleName</moduleName>
                    </modules>
                </args>
            </customer>
        </routers>
    </frontend>
</config>
Était-ce utile?

La solution

Vous manquez cela config.xml au même niveau que <blocks>

<models>
    <modulename>
        <class>Namespace_Modulename_Model</class>
    </modulename>
<models>

Puis créez la classe Namespace_Modulename_Model_Source_StoreViewCode avec la méthode toOptionArray à l'intérieur. Cette méthode doit renvoyer un tableau avec les options disponibles.

Dans votre script d'installation, la source devrait ressembler à ceci:

'source' => 'modulename/source_storeViewCode'
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top