所以我這是在控制器中創建一個這樣的數據提供程序:Yii2 - 使用數據提供程序多次使用不同的排序
$modelSearch = new SearchModel();
$data_provider = $modelSearch->search(Yii::$app->request->queryParams); // returns the data provider
然後我用$ data_provider的觀點是這樣的:
GridView::widget([
'dataProvider' => $data_provider,
'export' => false,
'columns' => [
...
],
...
但現在我想使用相同的數據從$ data_provider 但沒有分頁和其他排序規格。
試過,但不起作用:
$data_provider->sort = ['defaultOrder'=> ['column_a' => SORT_ASC, 'column_b' => SORT_DESC]]
$data_provider->pagination = false;
我想這是因爲數據已經與->search()
方法檢索。我是否需要創建一個全新的搜索模型類?只是爲了得到不同的排序?
在此先感謝!
我會嘗試這個明天馬上!如果有效,我會接受你的答案。 – MDijkstra
@Funnydutchman。好吧,讓我知道 – scaisEdge
它沒有像我想要的那樣工作。我問這個問題是錯誤的,說我想使用相同的數據(我想使用相同的搜索)。我認爲排序工作,但數據仍然是第一個dataProvider相同。這是因爲它在「$ modelSearch-> search($ params)」的那一刻填充了dataProvider,而不是在使用$ dataProvider(例如$ dataProvider-> getModels())的那一刻。我最終創建了一個新的搜索方法「$ modelSearch-> customSearch()」,它提供了另一個數據提供者。無論如何謝謝你的答案,但我不能接受它。 – MDijkstra