mirror of
				https://github.com/yiisoft/yii2.git
				synced 2025-11-04 06:37:55 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			57 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
Sorting
 | 
						|
=======
 | 
						|
 | 
						|
Sometimes the data that is to be displayed should be sorted according to one or several attributes. If you are using
 | 
						|
a [data provider](output-data-providers.md) with one of the [data widgets](output-data-widgets.md), sorting is
 | 
						|
handled for you automatically. If not, you should create a [[yii\data\Sort]] instance, configure it and
 | 
						|
apply it to the query. It can also be passed to the view, where it can be used to create links to sort by certain attributes.
 | 
						|
 | 
						|
A typical usage example is as follows,
 | 
						|
 | 
						|
```php
 | 
						|
function actionIndex()
 | 
						|
{
 | 
						|
    $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();
 | 
						|
 | 
						|
    return $this->render('index', [
 | 
						|
         'models' => $models,
 | 
						|
         'sort' => $sort,
 | 
						|
    ]);
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
In the view:
 | 
						|
 | 
						|
```php
 | 
						|
// display links leading to sort actions
 | 
						|
echo $sort->link('name') . ' | ' . $sort->link('age');
 | 
						|
 | 
						|
foreach ($models as $model) {
 | 
						|
    // display $model here
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
In the above, we declare two attributes that support sorting: `name` and `age`.
 | 
						|
We pass the sort information to the Article query so that the query results are
 | 
						|
sorted by the orders specified by the Sort object. In the view, we show two hyperlinks
 | 
						|
that can lead to pages with the data sorted by the corresponding attributes.
 | 
						|
 | 
						|
The [[yii\data\Sort|Sort]] class will obtain the parameters passed with the request automatically
 | 
						|
and adjust the sort options accordingly.
 | 
						|
You can adjust the parameters by configuring the [[yii\data\Sort::$params|$params]] property.
 |