Magento 2 কাস্টম গ্রিড কলাম সাজানোর ক্রম


20

আমি ইউআই কম্পোনেন্টটি ব্যবহার করে ম্যাজেন্টো অ্যাডমিনে একটি কাস্টম গ্রিড তৈরি করেছি। মূলত, সমস্ত ঠিকঠাক কাজ করছে, কলামগুলির ক্রম ছাড়াও যা সঠিক দেখাচ্ছে না। এখানে চিত্র বর্ণনা লিখুন

  • আপনি দেখতে পাচ্ছেন অ্যাকশন কলামটি শুরুতে ঠিক এবং নির্বাচিতটি শেষে রয়েছে is
  • আমি যখন এক্সএমএলে কলামগুলি তৈরি করেছি তখন আমি sortOrderপ্রতিটি কলামের বৈশিষ্ট্যটি বিবেচনা করেছি , তবে কোনওভাবে অর্ডারটি আমি সেট করেছিলাম তা নয়

listing.xmlনীচের কোডটি নিম্নলিখিত

<columns name="inactive_columns" class="Module\MyModule\Ui\Component\Listing\Columns">
    <argument name="data" xsi:type="array">
        <item name="config" xsi:type="array">
            <item name="storageConfig" xsi:type="array">
                <item name="provider" xsi:type="string">inactive_listing.inactive_listing.listing_top.bookmarks</item>
                <item name="namespace" xsi:type="string">current</item>
            </item>
            <item name="editorConfig" xsi:type="array">
                <item name="selectProvider" xsi:type="string">inactive_listing.inactive_listing.inactive_columns.ids</item>
                <item name="enabled" xsi:type="boolean">true</item>
                <item name="indexField" xsi:type="string">entity_id</item>
                <item name="clientConfig" xsi:type="array">
                    <item name="saveUrl" xsi:type="url" path="customer/index/inlineEdit"/>
                    <item name="validateBeforeSave" xsi:type="boolean">false</item>
                </item>
            </item>
            <item name="childDefaults" xsi:type="array">
                <item name="fieldAction" xsi:type="array">
                    <item name="provider" xsi:type="string">inactive_listing.inactive_listing.inactive_columns_editor</item>
                    <item name="target" xsi:type="string">startEdit</item>
                    <item name="params" xsi:type="array">
                        <item name="0" xsi:type="string">${ $.$data.rowIndex }</item>
                        <item name="1" xsi:type="boolean">true</item>
                    </item>
                </item>
                <item name="storageConfig" xsi:type="array">
                    <item name="provider" xsi:type="string">inactive_listing.inactive_listing.listing_top.bookmarks</item>
                    <item name="root" xsi:type="string">columns.${ $.index }</item>
                    <item name="namespace" xsi:type="string">current.${ $.storageConfig.root }</item>
                </item>
            </item>
        </item>
    </argument>
    <selectionsColumn name="ids">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="indexField" xsi:type="string">entity_id</item>
                <item name="sortOrder" xsi:type="number">0</item>
            </item>
        </argument>
    </selectionsColumn>
    <column name="entity_id">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="filter" xsi:type="string">textRange</item>
                <item name="sorting" xsi:type="string">asc</item>
                <item name="label" xsi:type="string" translate="true">ID</item>
                <item name="sortOrder" xsi:type="number">20</item>
            </item>
        </argument>
    </column>
    <column name="firstname">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="filter" xsi:type="string">text</item>
                <item name="label" xsi:type="string" translate="true">Firstname</item>
                <item name="editor" xsi:type="string">text</item>
                <item name="sortOrder" xsi:type="number">40</item>
            </item>
        </argument>
    </column>
    <column name="lastname">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="filter" xsi:type="string">text</item>
                <item name="label" xsi:type="string" translate="true">Lastname</item>
                <item name="editor" xsi:type="string">text</item>
                <item name="sortOrder" xsi:type="number">50</item>
            </item>
        </argument>
    </column>
    <column name="email">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="filter" xsi:type="string">text</item>
                <item name="editor" xsi:type="string">text</item>
                <item name="label" xsi:type="string" translate="true">Email Cacat</item>
                <item name="sortOrder" xsi:type="number">30</item>
            </item>
        </argument>
    </column>
    <column name="group_id">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="filter" xsi:type="string">select</item>
                <item name="editor" xsi:type="string">select</item>
                <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/select</item>
                <item name="dataType" xsi:type="string">select</item>
                <item name="label" xsi:type="string" translate="true">Group</item>
                <item name="sortOrder" xsi:type="number">90</item>
            </item>
        </argument>
    </column>
    <column name="billing_telephone">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="filter" xsi:type="string">text</item>
                <item name="editor" xsi:type="string">text</item>
                <item name="label" xsi:type="string" translate="true">Phone</item>
                <item name="sortOrder" xsi:type="number">100</item>
            </item>
        </argument>
    </column>
    <column name="created_at" class="Magento\Ui\Component\Listing\Columns\Date">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="filter" xsi:type="string">dateRange</item>
                <item name="dataType" xsi:type="string">date</item>
                <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/date</item>
                <item name="label" xsi:type="string" translate="true">Customer Since</item>
                <item name="sortOrder" xsi:type="number">110</item>
            </item>
        </argument>
    </column>
    <column name="last_visit_at" class="Magento\Ui\Component\Listing\Columns\Date">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/date</item>
                <item name="filter" xsi:type="string">dateRange</item>
                <item name="visible" xsi:type="boolean">false</item>
                <item name="dataType" xsi:type="string">date</item>
                <item name="label" xsi:type="string" translate="true">Last Logged In</item>
                <item name="sortOrder" xsi:type="number">120</item>
            </item>
        </argument>
    </column>
    <column name="created_in">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="visible" xsi:type="boolean">false</item>
                <item name="label" xsi:type="string" translate="true">Account Created in</item>
                <item name="sortOrder" xsi:type="number">140</item>
            </item>
        </argument>
    </column>
    <column name="kpi_views_customer">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="filter" xsi:type="string">text</item>
                <item name="label" xsi:type="string" translate="true">Kpi Views</item>
                <item name="sortOrder" xsi:type="number">60</item>
            </item>
        </argument>
    </column>
    <column name="customer_membership">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="filter" xsi:type="string">text</item>
                <item name="label" xsi:type="string" translate="true">Customer Membership</item>
                <item name="sortOrder" xsi:type="number">70</item>
            </item>
        </argument>
    </column>
    <column name="customer_access">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="filter" xsi:type="string">text</item>
                <item name="label" xsi:type="string" translate="true">Customer Access</item>
                <item name="sortOrder" xsi:type="number">80</item>
            </item>
        </argument>
    </column>
    <actionsColumn name="actions" class="Magento\Customer\Ui\Component\Listing\Column\Actions">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="indexField" xsi:type="string">entity_id</item>
                <item name="sortOrder" xsi:type="number">222</item>
            </item>
        </argument>
    </actionsColumn>
</columns> 

এবং ক্লাস মডিউল \ MyModule \ Ui \ উপাদান \ তালিকা \ কলামগুলি

class Columns extends \Magento\Ui\Component\Listing\Columns
{

/**
 * @var \KPIs\CustomerReports\Model\Customer\Attribute\Repository\AttributeRepository $attributeRepository
 */
protected $attributeRepository;

protected $manageAttributes;

/** @var int */
protected $columnSortOrder;

public function __construct(
    ContextInterface $context,
    ColumnFactory $columnFactory,
    AttributeRepository $attributeRepository,
    ManageAttributes $manageAttributes,
    InlineEditUpdater $inlineEditor,
    array $components = [],
    array $data = []
)
{
    parent::__construct($context, $components, $data);
    $this->columnFactory = $columnFactory;
    $this->attributeRepository = $attributeRepository;
    $this->manageAttributes = $manageAttributes;
    $this->inlineEditUpdater = $inlineEditor;
}

public function prepareDataSource(array $dataSource)
{
    $customerAccessOptions = $this->attributeRepository->get(CustomerMetadataInterface::ENTITY_TYPE_CUSTOMER, "customer_access")->getOptions();
    $customerMembershipOptions = $this->attributeRepository->get(CustomerMetadataInterface::ENTITY_TYPE_CUSTOMER, "customer_membership")->getOptions();
    if (isset($dataSource['data']['items'])) {
        foreach ($dataSource['data']['items'] as & $item) {
            if (isset($item["customer_access"])) {
                $item["customer_access"][0] = $customerAccessOptions[$item["customer_access"][0]]->getLabel();
            }
            if (isset($item["customer_membership"])) {
                $item["customer_membership"] = $customerMembershipOptions[$item["customer_membership"][0]]->getLabel();
            }
        }
    }
    return $dataSource;
}
}
  • যেমন আপনি দেখতে পাচ্ছেন, ক্লাসে আমি সাজ্ট অর্ডার সম্পর্কিত কোনও কিছুই করি না :), তাই এটি ডিফল্ট আচরণ হওয়া উচিত
  • এছাড়াও, ক্রিয়া এবং নির্বাচন কলামগুলি টেনে এনে ফেলে দেওয়া যাবে না (যতদূর আমি দেখেছি)

এক্সএমএল বা কোড থেকে আমি কীভাবে কলামগুলি বাছাই করতে পারি তার কারও কি ধারণা আছে? ক্রিয়াটি সর্বশেষ কলাম এবং প্রথমটি নির্বাচন হওয়া উচিত। ধন্যবাদ! :)


2
গ্রিডে কলামটি টেনে আনার চেষ্টা করুন
কিয়ুর শাহ

আমি চেষ্টা করেছি যে এটি ইতিমধ্যে, এটি অ্যাকশন এবং নির্বাচন কলামগুলির সাথে কাজ করছে না
ড্রাগোস

উত্তর:


53

এই সমাধান চেষ্টা করুন

  1. গ্রিডে কলামটি বাছাই করতে লাইনের নীচে ব্যবহার করুন।

    <item name="sortOrder" xsi:type="number">6</item>
  2. আপনার ডাটাবেস সারণি খুলুন ui_bookmark

  3. Ui_bookmark টেবিলের নেমস্পেস কলাম থেকে আপনার uiComp घटक এর নাম অনুসন্ধান করুন । আপনি সংশ্লিষ্ট লেআউট এক্সএমএল থেকে uiComp घटक নাম পরীক্ষা করতে পারেন। নীচে কেবল একটি উদাহরণ পাথ।

    /app/code/Vendor/Module/view/adminhtml/layout/module__controller_index.xml
  4. এখন আপনি রেকর্ডগুলি মুছুন যা আপনি ui_bookmark টেবিল থেকে সন্ধান করেন

  5. ক্যাশে সাফ করুন

    php bin/magento cache:flush
    
    php bin/magento cache:clean

এখানেই শেষ. উপভোগ করুন!


হ্যাঁ, এটি সঠিক উত্তর। ধন্যবাদ! :)
ড্রাগগস

7
কাজ করে তবে সরাসরি ডাটাবেস হেরফের ছাড়াই কীভাবে তা রিফ্রেশ করবেন তা জেনে ভাল লাগবে।
ভলভক্স

এটি পুদিনার মতো কাজ করে :)
প্রবীণ নেগামিণী

অ্যাডমিন লগআউট / লগইন কোডিংয়ে এটি সঠিকভাবে সেট করা থাকলে তার ক্রমটি রিফ্রেশ করতে পারে।
অগিলক্স

5

টেবিলের মধ্যে Magento2 এ ui গ্রিডের জন্য কলাম ক্রম order ui_bookmark

namespaceসমান কলামের জন্য আপনার গ্রিডের নাম এবং সনাক্তকারী = currentআপনার configকলামের মান পরিবর্তন করা উচিত । সারিটির প্রতিটি প্রান্তে, প্যারামিটারের "পজিশনে" কলামগুলি অর্ডার পেতে পারেন: {}


সত্যিই আমার জন্য পূর্ণ সাহায্য! এটি সমাধান কাজ করছে। আমি বর্তমান এবং ডিফল্ট উভয় দর্শন মুছে ফেলেছি তাই এখন এটি আমার ইচ্ছে মতো ঠিকঠাক কাজ করছে।
ভূপেন্দ্র জাদেজা

2

আপনাকে প্রথমে আপনার "মডিউল.এক্সএমএল" পরীক্ষা করতে হবে এবং কোডটি সন্ধান করতে হবে। উদাহরণ:

এবং অর্ডার মডিউল লোড অর্ডারের উপর নির্ভর করে তার আগে বা তার আগে অবশ্যই আপনার মডিউলটির ক্রমটি লোড করা উচিত বা আপনার প্রয়োজনীয়তা অনুযায়ী আপনার মডিউল লোড নিশ্চিত করতে হবে তা পরীক্ষা করুন।

আপনি আপনার মডিউল লোড অর্ডার ইত্যাদি-> config.xML ফাইলটি পরীক্ষা করতে পারেন।

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