forked from yiisoft/yii2
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request yiisoft#8637 from alcirmonteiro/master
docs/guide-pt-BR/output-sorting.md - translate [ci skip]
- Loading branch information
Showing
1 changed file
with
77 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
Ordenação | ||
======= | ||
|
||
Ao exibir várias linhas de dados, muitas vezes é necessário que os dados sejam ordenados de acordo com algumas colunas especificadas pelos usuários finais. Yii utiliza um objeto [[yii\data\Sort]] para representar as informações sobre um esquema de ordenação. Em particular, | ||
|
||
* [[yii\data\Sort::$attributes|attributes]] especifica os *atributos* através dos quais os dados podem ser ordenados. | ||
Um atributo pode ser simples como um [atributo do model](structure-models.md#attributes). Ele também pode ser um composto por uma combinação de múltiplos atributos de model ou colunas do DB. Mais detalhes serão dados abaixo. | ||
* [[yii\data\Sort::$attributeOrders|attributeOrders]] dá as instruções de ordenação requisitadas para cada atributo. | ||
* [[yii\data\Sort::$orders|orders]] dá a direção da ordecação das colunas. | ||
|
||
Para usar [[yii\data\Sort]], primeiro declare quais atributos podem ser ordenados. Em seguida, pegue a requisição com as informações de ordenação através de | ||
[[yii\data\Sort::$attributeOrders|attributeOrders]] ou [[yii\data\Sort::$orders|orders]] | ||
E use-os para personalizar a consulta de dados. Por exemplo, | ||
|
||
```php | ||
use yii\data\Sort; | ||
|
||
$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', | ||
], | ||
], | ||
]); | ||
|
||
$articles = Article::find() | ||
->where(['status' => 1]) | ||
->orderBy($sort->orders) | ||
->all(); | ||
``` | ||
|
||
No exemplo abaixo, dois atributos são declarados para o objeto [[yii\data\Sort|Sort]]: `age` e `name`. | ||
|
||
O Atributo `age` é um atributo *simples* que corresponde ao atributo `age` da classe Active Record `Article`. | ||
É equivalente a seguinte declaração: | ||
|
||
```php | ||
'age' => [ | ||
'asc' => ['age' => SORT_ASC], | ||
'desc' => ['age' => SORT_DESC], | ||
'default' => SORT_ASC, | ||
'label' => Inflector::camel2words('age'), | ||
] | ||
``` | ||
|
||
O atributo `name` é um atributo *composto* definido por `first_name` e `last_name` de `Article`. Declara-se com a seguinte estrutura de array: | ||
|
||
- Os elementos `asc` e `desc` determina a direção da ordenação dos atributos em ascendente ou descendente respectivamente. Seus valores representam as colunas e as direções pelas quais os dados devem ser classificados. Você pode especificar uma ou várias colunas para indicar uma ordenação simples ou composta. | ||
- O elemento `default` especifica a direção pela qual o atributo deve ser ordenado quando requisitado. O padrão é a ordem crescente, ou seja, se a ordanação não for definida previamente e você pedir para ordenar por esse atributo, os dados serão ordenados por esse atributo em ordem crescente. | ||
- O elemento `label` especifica o rótulo deve ser usado quando executar [[yii\data\Sort::link()]] para criar um link de ordenação. | ||
Se não for definida, [[yii\helpers\Inflector::camel2words()]]será chamado para gerar um rótulo do nome do atributo. | ||
Perceba que não será HTML-encoded. | ||
|
||
> Observação: Você pode alimentar diretamente o valor de [[yii\data\Sort::$orders|orders]] para a consulta do banco de dados para implementar a sua cláusula `ORDER BY`. Não utilize [[yii\data\Sort::$attributeOrders|attributeOrders]] porque alguns dos atributos podem ser compostos e não podem ser reconhecidos pela consulta do banco de dados. | ||
Você pode chamar [[yii\data\Sort::link()]] para gerar um hyperlink em que os usuários finais podem clicar para solicitar a ordenação dos dados pelo atributo especificado. Você também pode chamar [[yii\data\Sort::createUrl()]]para criar um URL ordenáveis. | ||
Por exemplo, | ||
|
||
```php | ||
// especifica a rota que a URL a ser criada deve usar | ||
// Se você não especificar isso, a atual rota requisitada será utilizada | ||
$sort->route = 'article/index'; | ||
|
||
// exibe links direcionando a ordenação por ‘name‘ e ‘age‘, respectivamente | ||
echo $sort->link('name') . ' | ' . $sort->link('age'); | ||
|
||
// exibe: /index.php?r=article/index&sort=age | ||
echo $sort->createUrl('age'); | ||
``` | ||
|
||
[[yii\data\Sort]] verifica o parâmetro `sort` da consulta para determinar quais atributos estão sendo requisitados para ordenação. | ||
Você pode especificar uma ordenação padrão através de [[yii\data\Sort::defaultOrder]] quando o parâmetro de consulta não está fornecido. | ||
Você também pode personalizar o nome do parâmetro de consulta configurando o [[yii\data\Sort::sortParam|sortParam]] property. |