سؤال

أنا جديد على 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();
?>

لم يتم تكوين use_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