Configuração no controller
Para habilitar o sistema de ordenação em um módulo, é necessário implementar no controller uma função pública chamada orderConfig()
Essa função é responsável por retornar duas arrays principais que controlam todo o comportamento da ordenação: $generalConfig e $configLevels.
$generalConfig
A array $generalConfig contém configurações gerais da ordenação.
Atualmente, possui apenas uma propriedade possível:
$generalConfig = ['selfGroupedRecords' => false];
| Propriedade | Tipo | Descrição |
|---|---|---|
| selfGroupedRecords | bool | Define se a ordenação será recursiva dentro do mesmo módulo (por exemplo, quando um registro pode ter outro como “pai”). |
$configLevels
A array $configLevels é onde é definida toda a lógica de ordenação.
Cada item dentro dela representa um nível de ordenação — ou seja:
-
Se for uma ordenação simples (sem níveis adicionais ou recursivos), haverá apenas um nível.
-
Se for uma ordenação hierárquica (por exemplo, seção → produto), haverá um nível para cada relação.
💡 Observações:
- A ordem dos itens na array define a hierarquia dos níveis.
O primeiro item representa o primeiro nível da ordenação, o segundo item o segundo nível, e assim por diante. - A chave de cada nível deve ser um identificador em camelCase, de preferência o nome do módulo.
Cada nível da configuração deve conter as seguintes propriedades:
$configLevels = [
'levelOne' => [
'label' => 'Nivel 1',
'model' => SubmodulesTest::class,
'sortable' => true,
'labelBtnNextLevel' => 'Ordernar itens do nível 1',
'breadcrumbColumnName' => 'name',
'order' => ['column' => 'order', 'type' => 'ASC'],
'AdditionalQuery' => function ($q) { $q->where('id', 1); },
'columnsToList' => [
[
'name' => 'active',
'label' => 'Status'
],
[
'name' => 'id',
'label' => '#'
],
[
'name' => 'name',
'label' => 'Título'
],
],
],
'levelTwo' => [
'label' => 'Nivel 2',
'model' => NivelDoi::class,
'sortable' => true,
'order' => ['column' => 'order', 'type' => 'ASC'],
'breadcrumbColumnName' => 'name',
'columnsToList' => [
[
'name' => 'active',
'label' => 'Status'
],
[
'name' => 'id',
'label' => '#'
],
[
'name' => 'name',
'label' => 'Título'
],
],
],
// Adicione mais níveis aqui, se necessário
];
| Propriedade | Tipo | Descrição |
|---|---|---|
| label | string | Nome descritivo do nível. |
| model | Model | Instância da model correspondente ao nível. |
| sortable | bool | Define se o nível atual pode ser ordenado (true / false). |
| labelBtnNextLevel |
string (opcional) |
Texto exibido no botão que permite avançar para o próximo nível. |
| breadcrumbColumnName | string | Coluna usada para exibir o nome no breadcrumb. |
| order | array | Define a ordenação padrão da listagem (['column' => 'id', 'type' => 'asc']). |
| columnToList | array | Define as colunas exibidas na listagem de ordenação. Cada item deve conter name (coluna no banco) e label (rótulo exibido no frontend). |
| additionalQuery |
closure (opcional) |
Permite aplicar filtros adicionais na query de listagem. |
Exemplo:
public function orderConfig()
{
$generalConfig = ['selfGroupedRecords' => false];
$configLevels = [
'author' => [
'label' => 'Autores',
'model' => Author::class,
'sortable' => true,
'order' => ['column' => 'order', 'type' => 'ASC'],
'breadcrumbColumnName' => 'title',
'columnsToList' => [
[
'name' => 'active',
'label' => 'Status'
],
[
'name' => 'id',
'label' => '#'
],
[
'name' => 'name',
'label' => 'Título'
],
],
],
// Adicione mais níveis aqui, se necessário
];
return ['generalConfig' => $generalConfig, 'configLevels' => $configLevels];
}