Yii2 ডেটা সরবরাহকারী ডিফল্ট বাছাই


100

Yii 1.1 এ এই কোডটি ডিফল্ট বাছাইয়ের জন্য কাজ করে:

$dataProvider = new CActiveDataProvider('article',array(
    'sort'=>array(
        'defaultOrder'=>'id DESC',
    ),
));

Yii2 এ ডিফল্ট বাছাই কিভাবে সেট করা যায়?

কোডের নীচে চেষ্টা করা হয়েছে, তবে কোনও ফলাফল নেই:

$dataProvider = new ActiveDataProvider([
    'query' => $query,
    'sort' => ['defaultOrder'=>'topic_order asc']
]);

উত্তর:


176

আমি মনে করি এর সঠিক সমাধান আছে। yii\data\Sortঅবজেক্টটি কনফিগার করুন :

 $dataProvider = new ActiveDataProvider([
     'query' => $query,
     'sort'=> ['defaultOrder' => ['topic_order' => SORT_ASC]],
 ]);

অফিসিয়াল ডক লিঙ্ক


এই সমাধানটি কাজ করে তবে সূচীতে অনুসন্ধান এখন কাজ করে না।
রবি সোত্তিনি


15

ডিফল্টঅর্ডারে একটি অ্যারে থাকে যেখানে কীটি একটি কলামের নাম এবং মান হ'ল SORT_DESCবা SORT_ASCএর কারণেই কোডটি কাজ করে না।

$dataProvider = new ActiveDataProvider([
        'query' => $query,
        'sort' => ['defaultOrder'=>'topic_order asc']
    ]);

সঠিক পথ

$dataProvider = new ActiveDataProvider([
    'query' => $query,
    'sort' => [
        'defaultOrder' => [
            'topic_order' => SORT_ASC,
        ]
    ],
]);

দ্রষ্টব্য: যদি কোনও কোয়েরিটি ইতিমধ্যে অর্ডারবিধির ধারাটি নির্দিষ্ট করে দেয় তবে শেষ ব্যবহারকারীরা প্রদত্ত নতুন ক্রম নির্দেশাবলী (বাছাই করুন কনফিগারেশনের মাধ্যমে) বিদ্যমান অর্ডারব্লে দন্ডের সাথে যুক্ত হবে। যে কোনও বিদ্যমান সীমা এবং অফসেট ক্লজগুলি শেষ ব্যবহারকারীদের (পৃষ্ঠাগুলি কনফিগারেশনের মাধ্যমে) পৃষ্ঠাগুলি অনুরোধের মাধ্যমে ওভাররাইট করা হবে।

আপনি ডেটা সরবরাহকারীর Yii2 গাইড থেকে বিস্তারিত শিখতে পারেন

বাছাই করা অবজেক্টটি কোয়েরিতে পাস করে ort

 $sort = new Sort([
        'attributes' => [
            'age',
            'name' => [
                'asc' => ['first_name' => SORT_ASC, 'last_name' => SORT_ASC],
                'desc' => ['first_name' => SORT_DESC, 'last_name' => SORT_DESC],
                'default' => SORT_DESC,
                'label' => 'Name',
            ],
        ],
    ]);

    $models = Article::find()
        ->where(['status' => 1])
        ->orderBy($sort->orders)
        ->all();

7

আপনার যদি সিআরইউডি (সূচক) থাকে এবং আপনার গ্রিডভিউ, বা তালিকাভিউ বা আরও অনেকের জন্য আপনার নিয়ামককে বাছাই করার জন্য ডিফল্ট সেট করতে হয় ... উদাহরণ

public function actionIndex()
{
    $searchModel = new NewsSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
    // set default sorting
    $dataProvider->sort->defaultOrder = ['id' => SORT_DESC];

    return $this->render('index', [
        'searchModel' => $searchModel,
        'dataProvider' => $dataProvider,
    ]);
}

তোমার যোগ দরকার

$dataProvider->sort->defaultOrder = ['id' => SORT_DESC];

আপনি যদি সার্চমোডেলটি পরিবর্তন না করে নিয়ামকটিতে এটি করতে চান তবে এই উপায়। ধন্যবাদ!
নুনোরবটিস্তা




-2
    $modelProduct       =   new Product();
    $shop_id            =   (int)Yii::$app->user->identity->shop_id;

    $queryProduct       =   $modelProduct->find()
                            ->where(['product.shop_id'  => $shop_id]);


    $dataProviderProduct    =   new ActiveDataProvider([
                                    'query'         =>  $queryProduct,
                                     'pagination' => [ 'pageSize' => 10 ],
                                    'sort'=> ['defaultOrder' => ['id'=>SORT_DESC]]
                                ]); 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.