ম্যাজেন্টো 2: গ্রাহক কাস্টম বৈশিষ্ট্য কীভাবে তৈরি করবেন?


17

Magento 2 এ গ্রাহক সত্তার জন্য একটি কাস্টম বৈশিষ্ট্য তৈরি করার পদক্ষেপগুলি কী কী?


একটি বৈশিষ্ট্য প্রোগ্রামেটিক্যালি ইন Magento 2 নিবন্ধ যোগ করার atwix.com/magento/adding-attribute-programatically-magento2 তা ধাপে ধাপে
danielruedaa

উত্তর:


28

Magento 2 নিবন্ধে : গ্রাহকের বৈশিষ্ট্য কীভাবে তৈরি করবেন? এটি ধাপে ধাপে বর্ণনা করুন।

মূল অংশটি DataInstall::installনীচে পদ্ধতি:

public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
    {

        /** @var CustomerSetup $customerSetup */
        $customerSetup = $this->customerSetupFactory->create(['setup' => $setup]);

        $customerEntity = $customerSetup->getEavConfig()->getEntityType('customer');
        $attributeSetId = $customerEntity->getDefaultAttributeSetId();

        /** @var $attributeSet AttributeSet */
        $attributeSet = $this->attributeSetFactory->create();
        $attributeGroupId = $attributeSet->getDefaultGroupId($attributeSetId);

        $customerSetup->addAttribute(Customer::ENTITY, '{attributeCode}', [
            'type' => 'varchar',
            'label' => '{attributeLabel}',
            'input' => 'text',
            'required' => false,
            'visible' => true,
            'user_defined' => true,
            'sort_order' => 1000,
            'position' => 1000,
            'system' => 0,
        ]);
        //add attribute to attribute set
        $attribute = $customerSetup->getEavConfig()->getAttribute(Customer::ENTITY, 'magento_username')
        ->addData([
            'attribute_set_id' => $attributeSetId,
            'attribute_group_id' => $attributeGroupId,
            'used_in_forms' => ['adminhtml_customer'],
        ]);

        $attribute->save();


    }

CustomerSetupFactoryসরাসরি ইনজেকশনের পরিবর্তে ইনজেকশনের সুবিধা কী CustomerSetup? ব্যাখ্যা করার জন্য ধন্যবাদ।
বিনাই

@ বিনাই, দেখে মনে হচ্ছে গ্রাহকসেটআপ ক্লাসটি কনড্রাক্টরে মডিউলডাটাসেটআপআইনফেসটি প্রত্যাশা করে তবে এই শ্রেণিটি ইনস্টল পদ্ধতির যুক্তি।
কান্দি

যেহেতু ModuleDataSetupInterfaceসেটআপ শ্রেণীর সাথে সুনির্দিষ্ট কোনও রাজ্য নেই তাই অবজেক্টম্যানেজারকে উদাহরণস্বরূপ নির্ভরতা তৈরি করার জন্য দায়বদ্ধ করে দেওয়া কি ভাল হবে না? এইভাবে CustomerSetupক্লায়েন্ট বাস্তবায়নের সাথে কম মিলিত হবে। যতটা আমি দেখতে পারেন.
বিনাই

মডিউলটি সরিয়ে ফেললে বৈশিষ্ট্যটি মুছে ফেলা হয় না, তখন কীভাবে এটি অপসারণ করা উচিত?
ডিভনডাহন

কীভাবে আমরা একাধিক ফিড বা বৈশিষ্ট্য যুক্ত করতে পারি?
জয়

1

আপনার মডিউলে, নীচে এই ফাইলটি প্রয়োগ করুন যা একটি নতুন গ্রাহক সত্তা তৈরি করবে ।

টেস্ট \ CustomAttribute \ সেটআপ \ InstallData.php

<?php
namespace test\CustomAttribute\Setup;

use Magento\Customer\Setup\CustomerSetupFactory;
use Magento\Customer\Model\Customer;
use Magento\Eav\Model\Entity\Attribute\Set as AttributeSet;
use Magento\Eav\Model\Entity\Attribute\SetFactory as AttributeSetFactory;
use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;

/**
 * @codeCoverageIgnore
 */
class InstallData implements InstallDataInterface
{

    /**
     * @var CustomerSetupFactory
     */
    protected $customerSetupFactory;

    /**
     * @var AttributeSetFactory
     */
    private $attributeSetFactory;

    /**
     * @param CustomerSetupFactory $customerSetupFactory
     * @param AttributeSetFactory $attributeSetFactory
     */
    public function __construct(
        CustomerSetupFactory $customerSetupFactory,
        AttributeSetFactory $attributeSetFactory
    ) {
        $this->customerSetupFactory = $customerSetupFactory;
        $this->attributeSetFactory = $attributeSetFactory;
    }


    public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
    {

        /** @var CustomerSetup $customerSetup */
        $customerSetup = $this->customerSetupFactory->create(['setup' => $setup]);

        $customerEntity = $customerSetup->getEavConfig()->getEntityType('customer');
        $attributeSetId = $customerEntity->getDefaultAttributeSetId();

        /** @var $attributeSet AttributeSet */
        $attributeSet = $this->attributeSetFactory->create();
        $attributeGroupId = $attributeSet->getDefaultGroupId($attributeSetId);

        $customerSetup->addAttribute(Customer::ENTITY, 'custom_attribute', [
            'type' => 'varchar',
            'label' => 'Custom Attribute',
            'input' => 'text',
            'required' => false,
            'visible' => true,
            'user_defined' => true,
            'position' =>999,
            'system' => 0,
        ]);

        $attribute = $customerSetup->getEavConfig()->getAttribute(Customer::ENTITY, 'custom_attribute')
        ->addData([
            'attribute_set_id' => $attributeSetId,
            'attribute_group_id' => $attributeGroupId,
            'used_in_forms' => ['adminhtml_customer'],//you can use other forms also ['adminhtml_customer_address', 'customer_address_edit', 'customer_register_address']
        ]);

        $attribute->save();
    }
}

কাজ করছে না ....
সরফরাজ সিপাই

এটি আমার জন্য ম্যাগনেটো ২.৩ ইবনেব.com
magento-

@ রাফায়েল করিয়া গোমেস এই পদ্ধতিটি ব্যবহার করে একাধিক বৈশিষ্ট্য তৈরি করা সম্ভব? কিভাবে?
প্রাগম্যান

@ ZUBU আপনাকে প্রথমে একটি নতুন $ গ্রাহকসেটআপ-> অ্যাডঅ্যাট্রিবিউট যুক্ত করতে হবে, উল্লেখগুলি দেখতে আপনি মূলটিতে -> অ্যাডঅ্যাট্রিবিউট অনুসন্ধান করতে পারেন।
রাফায়েল কোরিয়া গোমেস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.