Yii2 排序多个参数URL

Yii2 Sort multiple parameters URL

我在 yii2 中有一个端点,我需要在其中按多个参数进行排序。我正在使用 ActiveDataProvider。这是 enpdoint:

public function actionIndex($client) 
{
        $sort = new Sort([
            'attributes'=> ['name','mail','crdate']
        ]);
        $query = Customer::find()
                ->andWhere(['client' => $client])
                ->orderBy($sort->orders);
        $provider = new ActiveDataProvider(['query' => $query]);
        return $provider->getModels();
}

现在按单个参数排序,如:customers?client=1&sort=mail 工作正常。

虽然我想按多个参数排序。我应该如何在 url?

中执行此操作

设置

$sort = new Sort([
    'attributes'=> ['name','mail','crdate'],
    'enableMultiSort' => true,
]);

现在您可以通过使用 , 分隔它们来传递多个排序列,例如

?sort=name,mail

如果您在名称前加上 -,您会得到降序,否则它会升序。
如果您想将 , 分隔符更改为其他内容,请在排序对象的 separator 配置键中设置它。

您应该尝试搜索 Costumer 模型

public function search($params)
{
    $query = Costumer::find();

    $dataProvider = new ActiveDataProvider([
        'query' => $query,
    ]);

    $this->load($params);

    if (!$this->validate()) {
        return $dataProvider;
    }

    $query->andFilterWhere([some condition for search]);

    return $dataProvider;
}