Magento2 এ গ্রিডে ডিফল্ট ফিল্টার যুক্ত করতে?


12

আমি অ্যাডমিন গ্রিডে শিরোনাম এবং স্থিতি ক্ষেত্রের বৈশিষ্ট্য সহ একটি কাস্টম মডিউল তৈরি করেছি।

মডিউল_টেষ্ট_গ্রিড_ব্লক.এক্সএমএলে গ্রিড সংগ্রহ

        <arguments>
             <argument name="id" xsi:type="string">testGrid</argument>
             <argument name="dataSource" xsi:type="object">Namespace\Module\Model\ResourceModel\test\Collection</argument>
             <argument name="default_sort" xsi:type="string">id</argument>
             <argument name="default_dir" xsi:type="string">desc</argument>                             
             <argument name="grid_url" xsi:type="url" path="*/*/grid"><param name="_current">1</param></argument>
         </arguments>

আমি ডেটা সক্ষম করতে সক্ষম হয় তা দেখাতে চাই। অ্যাডমিন গ্রিড সংগ্রহগুলিতে ডিফল্ট ফিল্টার যুক্ত করার কোনও বিকল্প আছে ?

সম্পাদনা

    <block class="Namespace\Module\Block\Adminhtml\Test\Grid" name="namespace_module_test.grid" as="grid">
       <arguments>
             <argument name="id" xsi:type="string">testGrid</argument>
             <argument name="dataSource" xsi:type="object">Namespace\Module\Model\ResourceModel\test\Collection</argument>
             <argument name="default_sort" xsi:type="string">id</argument>
             <argument name="default_dir" xsi:type="string">desc</argument>                             
             <argument name="grid_url" xsi:type="url" path="*/*/grid"><param name="_current">1</param></argument>
             <argument name="default_filter" xsi:type="array">
                  <item name="status" xsi:type="string">1</item>
             </argument>
         </arguments>
        .
        .
      </block>

ব্লক - গ্রিড.এফপি

    namespace Namespace\Module\Block\Adminhtml\Test;

    use Magento\Backend\Block\Widget\Grid as WidgetGrid;

     class Grid extends WidgetGrid
        {
          public function _construct()
           {
            parent::_construct(); 
            if ($this->hasData('default_filter')) {
            // print_r($this->getData('default_filter'));die;
            $this->setDefaultFilter($this->getData('default_filter'));
           }
        }
      }

ম্যাজেন্টো 2 এডমিন গ্রিড তৈরি করতে আমি এই লিঙ্কটি অনুসরণ করেছি

http://www.mage-world.com/blog/grid-and-form-in-magento-2-admin-panel-part-1.html

উত্তর:


12

আপনি যদি গ্রিড সংগ্রহ চিন্তার বিন্যাসকে সংজ্ঞায়িত করেন তবে আপনি ডিফল্ট ফিল্টার যুক্ত করতে আপডেটের ব্যবহার করতে পারেন।

<argument name="dataSource" xsi:type="object">
    Tutorial\SimpleNews\Model\Resource\News\Collection
    <updater>Tutorial\SimpleNews\Model\Resource\News\Collection\Updater</updater>
</argument>

এবং

<?php
namespace Tutorial\SimpleNews\Model\Resource\News\Collection;

class CollectionUpdater implements \Magento\Framework\View\Layout\Argument\UpdaterInterface
{

    /**
     * Update grid collection according to chosen order
     *
     * @param \Tutorial\SimpleNews\Model\Resource\News\Collection $argument
     * @return \Tutorial\SimpleNews\Model\Resource\News\Collection
     */
    public function update($argument)
    {
        $argument->addFieldToFilter('you_field', 'value');

        return $argument;
    }
}

বা গ্রিড ব্লক প্রসারিত করুন

class Grid extends \Magento\Backend\Block\Widget\Grid
{
    protected function _prepareCollection()
    {
        if ($this->getCollection()) {
            foreach ($this->getDefaultFilter() as $field => $value) {
                $this->getCollection()->addFieldToFilter($field, $value);
            }
        }
        return parent::_prepareCollection();
    }   
}

হাই ক্যান্ডি, এটি আমার পক্ষে কাজ করছে না। আপনি কি আমাকে এটিকে বাছাই করতে সহায়তা করতে পারেন ??
ভিগনা এস

5
এই উত্তরটি যে কেউ খুঁজে পেয়েছেন, দয়া করে মনে রাখবেন যে এটি কেবলমাত্র লিগ্যাসি গ্রিডে প্রযোজ্য। না UI 'তে-কম্পোনেন্ট ভিত্তিক গ্রিডের।
আন্দ্রে ক্লাং

সুতরাং, আমরা কীভাবে ইউআই-উপাদান ভিত্তিক গ্রিডে এই ধরণের ফিল্টার প্রয়োগ করতে পারি?
নাইট017

জন্য UI 'তে-কম্পোনেন্ট ভিত্তিক গ্রিড , এটা ভালো একই পদ্ধতির সঙ্গে কাজ করা যেতে পারে magento.stackexchange.com/a/178663/55259
টোর্রেয়

5

আপনার এটি যুক্তি ট্যাগের মধ্যে যুক্ত করতে হবে:

<argument name="default_filter" xsi:type="array">
    <item name="field_name_here" xsi:type="string">value here</item>
</argument>

যদি আপনার যুক্তিগুলি এই ব্লকটিতে অন্তর্ভুক্ত থাকে

<block class="Magento\Backend\Block\Widget\Grid" name="some.name.here" as="grid">

আপনার নিজের ক্লাস তৈরি করতে হবে যা এর প্রসারিত Magento\Backend\Block\Widget\Grid:

<?php 
namespace Namespace\Module\Block\Adminhtml\Whatever;

class Grid extends \Magento\Backend\Block\Widget\Grid
{
    public function _construct()
    {
        parent::_construct(); 
        if ($this->hasData('default_filter')) {
            $this->setDefaultFilter($this->getData('default_filter'));
        }
    }
}

এবং উপরের ব্লক ট্যাগটি সংশোধন করুন

 <block class="Namespace\Module\Block\Adminhtml\Whatever\Grid" name="some.name.here" as="grid">

যদি আপনি ইতিমধ্যে একটি কাস্টম গ্রিড ব্যবহার করেন এবং ডিফল্ট Magento\Backend\Block\Widget\Gridনা হন তবে আপনার ক্লাস তৈরি করার দরকার নেই।
আপনাকে কেবল _constructআপনার ক্লাসে উপরের পদ্ধতিটি অনুলিপি করতে হবে ।


হাই @ মারিয়াস, আপনার প্রতিক্রিয়াটির জন্য আপনাকে ধন্যবাদ। কনস্ট্রাক্ট পদ্ধতিতে আমি ডিফল্ট ফিল্টার মান পেয়েছি। ফিল্টারিং কাজ করছে না। খুব বেশি সমস্ত রেকর্ড পান না
ড্র্যাজি

1
আরও ভাল ওভারভিউ পেতে আপনার প্রশ্নের আরও উত্তর কোড যুক্ত করা উচিত।
মারিয়াস

আমি কী যুক্ত করেছি তার সাথে ফিল্টার কোডটি দিয়ে আমার প্রশ্নটি আপডেট করেছি
DRAJI

গ্রেট। আমি নতুন চেহারা নেব এবং ফলাফল নিয়ে ফিরে আসব।
মারিয়াস

হাই মারিয়াস, আমি চেষ্টা করেছিলাম কিন্তু এটি কাজ করছে না, আপনি কি কোনও সমাধান খুঁজে পেয়েছেন?
ভিগনা এস

0

এখানে ডেভডক্স সম্পর্কিত রেফারেন্স রয়েছে:

http://devdocs.magento.com/guides/v2.0/ui-components/ui-secondary-filter.html

যদি আপনার আরও তথ্যের প্রয়োজন হয় - আপনি ডক্স পৃষ্ঠার মাধ্যমে একটি টানা অনুরোধ বা সমস্যা তৈরি করতে পারেন - কেবল "গিটহাবের এই পৃষ্ঠাটি সম্পাদনা করুন" লিঙ্কটিতে ক্লিক করুন। ডক্স ক্রমাগত আপডেট এবং উন্নত হয়।


1
আপনার উল্লিখিত লিঙ্কটি ইউআই উপাদান ব্যবহার করে এমন গ্রিডে কীভাবে ফিল্টার যুক্ত করতে পারে তা দেখায়। আমি মনে করি প্রশ্নটি এমন একটি গ্রিড পরিবর্তন করার বিষয়ে যা প্রসারিত Magento\Backend\Block\Widget\Grid। তবে আমি ভুল হতে পারি।
মারিয়াস

হাই @ একুইনোক্ল্যাক আপনার প্রতিক্রিয়াটির জন্য আপনাকে ধন্যবাদ। তবে এটি ইউআই উপাদান ব্যবহার করে
দ্রাজি

0

কাজ করে না এমন অনেকগুলি কোড চেষ্টা করার পরে, শেষ পর্যন্ত কোনও উপায়ের কোডিংয়ের প্রয়োজন নেই - কাস্টম ভিউ ফাংশনটি সংরক্ষণ করে ব্যবহার করুন যা ফিল্টার এবং কলাম সেটিংস সংরক্ষণ করতে পারে।

নির্দিষ্ট পদক্ষেপ

ফিল্টার এবং কলাম সেটিংস সেট করার পরেDefault View আই আইকন সহ বোতামটি ক্লিক করুন , তারপরে Save View As…আপনার দর্শনটির জন্য একটি নাম লিখতে ক্লিক করুন । তারপরে আপনি যখনই গ্রিডটি পছন্দ করতে চান ঠিক তেমন কাস্টম ভিউতে ক্লিক করতে পারেন এবং আপনি নিজের পছন্দ মতো কাস্টম ভিউগুলি সংরক্ষণ করতে পারেন।

আপনি ফিরে যেতে পারেন এবং সম্পাদনা আইকনটি এটির পুনরায় নামকরণ করতে বা এটি পরে মুছতে বা ডিফল্ট দৃশ্যে ফিরে যেতে ব্যবহার করতে পারেন।

আমি মনে করি এটি ম্যাজেন্টো 2 তে একটি খুব ভাল ফাংশন :)

এখানে চিত্র বর্ণনা লিখুন

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