Magento 2 ui_comp घटक ফর্ম গ্রাহক বৈশিষ্ট্য দেখান


14

আমি ui_comp घटक ফর্ম তৈরি করেছি ।

আমি কোথায় গ্রাহক বিবরণ, হিসাবে একই দেখানোর জন্য প্রয়োজন গ্রাহক সম্পাদনা

তবে আমি customer_entityটেবিল থেকে তাদের ডেটা প্রদর্শন করতে সক্ষম ।

DataProvider.php

public function getData()
{
    if (isset($this->loadedData)) {
        return $this->loadedData;
    }

    // {Vendor}\{Module}\Model\GridFactory 
    // Returns Customer Resource Model
    $items = $this->gridFactory->create()->getCollection();

   $items->getSelect()->join('customer_entity_text as second', 'main_table.entity_id = second.entity_id');
    //print_r($items->getData()); exit;
    foreach($items as $contact){
        $this->loadedData[$contact->getEntityId()]['contact'] = $contact->getData();
    }

    return $this->loadedData;
}

আমি customer_entity_textপ্রদর্শন করার জন্য আমার কারখানার সাথে টেবিলে যোগদান করেছি status(গ্রাহক বৈশিষ্ট্য)।

এখন আমার দ্বিতীয় বৈশিষ্ট্য fileটাইপ হয়। এটি এর মধ্যে রয়েছে customer_entity_varchar, প্রথমত আমি ভেবেছিলাম যে আরও একটি যোগ যোগ করুন তবে আমি মনে করি এটি ভাল উপায় নয়।

তো, এর কি কোনও সমাধান আছে? Customer Attributeআমার ফর্মটিতে উভয়ই প্রদর্শন করা দরকার ।

ui_component

<field name="value">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="label" xsi:type="string">Status</item>
                <item name="visible" xsi:type="boolean">true</item>
                <item name="dataType" xsi:type="string">text</item>
                <item name="formElement" xsi:type="string">input</item>
                <item name="source" xsi:type="string">contact</item>
            </item>
        </argument>
    </field>

1)। উপরের উপাদানটি স্ট্যাটাসের জন্য ভাল কাজ করছে তবে প্রোফাইল চিত্রের জন্য নয় যা চিত্রের ধরণের।

<field name="value">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="label" xsi:type="string">Profile Image</item>
                <item name="visible" xsi:type="boolean">true</item>
                <item name="formElement" xsi:type="string">fileUploader</item>
                <item name="uploaderConfig" xsi:type="array">
                    <item name="url" xsi:type="url" path="path_controller"/>
                </item>
            </item>
        </argument>
    </field>

এমনকি যদি আমি একই নামে একটি ক্ষেত্র সরিয়ে ফেলি তবে form elementএটি কাজ করে বলে মনে হয় না।

fieldনামটি দেখুন যা স্থিতিরvalue জন্য ।

যদি আমি একই জিনিস ব্যবহার ইমেজ ইমেজ উপাদান চেয়ে ক্ষেত্র অদৃশ্য হয়।

দ্রষ্টব্য : ম্যাগেন্টো কেন নামটি ব্যবহার করতে দেয় না তা আমার কোনও ধারণা নেই value

কারণ আমি সংগ্রহে যোগদান করেছি তাই আমি valueঅ্যারে কী হিসাবে পেয়ে যাচ্ছি ।

** প্রশ্ন: সংগ্রহের সাথে যোগ না দিয়ে আমি কীভাবে এই ফর্মটিতে গ্রাহক বৈশিষ্ট্য পেতে পারি?

সর্বাধিক স্বাগত ছাড়াও যদি আপনার অন্য সমাধান থাকে তবে * **


আপনি যে নতুন অ্যাট্রিবিউট (গুলি) ব্যবহার করছেন তা গ্রাহক সত্তার ডিফল্ট অ্যাট্রিবিউট সেটে রয়েছে কিনা তা পরীক্ষা করতে পারেন?
অস্পষ্ট

আপনি কি আবার নিজের প্রশ্নটি পড়তে পারেন: প্রশ্নটি পড়ার সময় আমার কোনও অর্থ হয় না। এবং তাই এটি আপনার সমস্যা সমাধানে আমাদের সহায়তা করে না?
হার্ভে ট্রিবিউলয়

বাকী জিনিসগুলি ভুলে যান, আপনি যদি উত্তরটির চেয়ে উত্তর দিতে পারেন তবে আমি কীভাবে আমার কাস্টম ইউআই আকারে গ্রাহক বৈশিষ্ট্যগুলি প্রদর্শন করতে পারি? একটি চিত্রের সাথে এবং অন্যটি পাঠ্য।
টিবিএস ম্যাজে

আপনার প্রশ্নটি সীমানা বা ব্যাকএন্ডে কোনও ফর্ম তৈরি করতে হবে?
হার্ভে ট্রিবিউলয়

উত্তর:


0

আপনি এর সম্পর্ক আপনার কাস্টম টেবিল তৈরি করতে হবে customer_entity নিম্নরূপ সেটআপ স্ক্রিপ্ট ব্যবহারের টেবিল:

$relationalTable = 'custom_table';  
$table = $setup->getConnection()
    ->newTable($setup->getTable($relationalTable))
    // --- Add your other columns here ---
    ->addColumn('customer_id', Table::TYPE_INTEGER, 10, ['nullable' => false, 'unsigned' => true],
            'Customer Id')
    ->addForeignKey(
        $setup->getFkName(
            $relationalTable,           // priTableName
            'customer_id',              // priColumnName
            'customer_entity',          // refTableName
            'entity_id'                 // refColumnName
        ),
        'customer_id',                  // column
        $setup->getTable('customer_entity'),    
        'entity_id',                    // refColumn
        Table::ACTION_CASCADE           // onDelete
    )
    ->setComment('Customer relation table');

$setup->getConnection()->createTable($table);

তারপরে আপনাকে গ্রাহক মডেলটি লোড করতে হবে এবং নিম্নোক্তভাবে ডেটাপ্রোভিডার.এফপি এর getData () ফাংশনে আপনার কাস্টম টেবিলটিতে যোগদান করতে হবে:

protected $_customerModel;

public function __construct(
    \Magento\Customer\Model\CustomerFactory $customerModel
) {
    $this->_customerModel = $customerModel;
}

public function getData()
{
    if (isset($this->loadedData)) {
        return $this->loadedData;
    }

   $customer = $this->_customerModel->create();
    $collection = $customer->getCollection();
    $collection->getSelect()->join(
        ['custom' => $this->_resource->getTableName('custom_table')],
        'e.entity_id = custom.customer_id'
    );

    foreach($collection as $item){
        $this->loadedData[$item->getId()]['contact'] = $item->getData();
        // Using $item->getData(), you can get customer object with custom attributes as $item->getStatus() or $item->getProfileImage()
    }

    return $this->loadedData;
}

এখন আপনি নিম্নরূপে ui_component এ ফিল্ডের নামগুলি ব্যবহার করতে পারেন:

<field name="status"> <!-- your custom attribute code as field name -->
...
</field>

<field name="profile_image"> <!-- your custom attribute code as field name -->
...
</field>

আশা করি এই সমাধানটি আপনার সমস্যার সমাধান করতে পারে।


আমার সাহায্য দরকার দয়া করে আমার প্রশ্নটি " magento.stackexchange.com/questions/257577/… "
সিং
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.