문제

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

사용중인 _in_forms는 지금 구성되지 않았습니다. 내 문제 : Magento 백엔드에서 고객의 세부 사항을 보여 주려고 할 때 오류가 발생합니다.

경고 : 포함 (Mage/Modulename/Model/Source/StoreviewCode.php) : 스트림을 열지 못했습니다 : 해당 파일 또는 디렉토리가 없습니다.

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

그리고

'source' => 'NameSpace_ModuleName/source_storeViewCode'

도 작동하지 않았습니다. 마법사 네임 스페이스에서로드하려고합니다. 내 네임 스페이스로 어떻게 설정할 수 있습니까?

내 Source_model은 로컬/네임 스페이스/modulename/model/source/storeviewcode.php에 있습니다.

추신 : 내 모듈의 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>

그런 다음 수업을 만듭니다 Namespace_Modulename_Model_Source_StoreViewCode 방법으로 toOptionArray 그 안에. 이 방법은 사용 가능한 옵션이있는 배열을 반환해야합니다.

설치 스크립트에서 소스는 다음과 같습니다.

'source' => 'modulename/source_storeViewCode'
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top