Solución:
Puede personalizar el orden de las columnas en su DataProvider
. Por ejemplo, si usa ActiveDataProvider
en tus GridView
puede indicar columnas clasificables como a continuación:
$dataProvider = new ActiveDataProvider([
'query' => Model::find(),
'sort' => ['attributes' => ['column1','column2']]
]);
En el ejemplo anterior, solo column1
y column2
son clasificables.
También puede deshabilitar la clasificación de todas las columnas como se muestra a continuación:
'sort' =>false
Se sugiere echar un vistazo a Yii2
documento oficial de: Clase yii data Sort Como lo define:
Ordenar representa información relevante para la ordenación.
Cuando los datos deben ordenarse según uno o varios atributos, podemos usar Ordenar para representar la información de ordenación y generar hipervínculos apropiados que pueden conducir a acciones de ordenación.
Además de la respuesta de Ali, para las columnas agregadas y relacionadas, puede hacer lo siguiente:
public function actionIndex()
{
$dataProvider = new ActiveDataProvider([
'query' => User::find()->joinWith('role'),
'sort' => ['attributes' => [
//Normal columns
'username',
'email',
//aggregated columns
'full_name' => [
'asc' => ['first_name' => SORT_ASC, 'last_name' => SORT_ASC],
'desc' => ['first_name' => SORT_DESC, 'last_name' => SORT_DESC],
'default' => SORT_DESC
],
//related columns
'role.name' => [
'asc' => ['user_role.name' => SORT_ASC],
'desc' => ['user_role.name' => SORT_DESC],
'default' => SORT_DESC
],
],],
]);
}
Fuente: http://www.yiiframework.com/doc-2.0/yii-data-sort.html
Si desea deshabilitar la clasificación desde la vista de cuadrícula para una columna en particular, haga lo siguiente:
[
'attribute' => 'name',
'enableSorting' => false
],
mediante el uso 'enableSorting' => false