簡體   English   中英

如何為magento客戶定義新的source_model?

[英]How to define a new source_model for magento customer?

我是magento的新手,想要在登錄后根據用戶設置商店視圖。 用戶可以在注冊時選擇商店視圖,並將其作為EAV屬性存儲在數據庫中。

我的安裝腳本:

<?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();
?>

used_in_forms目前尚未配置。 我的問題:當我嘗試在magento后端顯示我的客戶的詳細信息時,我收到錯誤:

警告:include(Mage / ModuleName / Model / Source / StoreViewCode.php):無法打開流:沒有這樣的文件或目錄

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

'source' => 'NameSpace_ModuleName/source_storeViewCode'

也沒用。 它試圖從Mage NameSpace加載。 如何將其設置為我的命名空間?

我的source_model位於local / NameSpace / ModuleName / Model / Source / StoreViewCode.php中。

PS:我的模塊的config.xml

<?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>

您在config.xml中缺少與<blocks>相同的級別

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

然后使用其中的方法toOptionArray創建類Namespace_Modulename_Model_Source_StoreViewCode 該方法應該返回一個包含可用選項的數組。

在您的安裝腳本中,源代碼應如下所示:

'source' => 'modulename/source_storeViewCode'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM