Инвентаризация: Widget: DynaGridWidget
для отображения списка моделей используем компонент /app/components/DynaGridWidget (который в свою очередь использует kartik-v/yii2-dynagrid а тот kartik-v/yii2-grid)
echo DynaGridWidget::widget([ 'id' => 'arms-index', //обязательно, т.к. на основании ID формируется имя таблицы-виджета, а на основании имени хранятся настройки отображения отдельно на для каждой таблицы 'header' => Html::encode($this->title), 'columns' => require 'columns.php', 'createButton' => Html::a('Создать АРМ', ['create'], ['class' => 'btn btn-success']), 'hintButton' => \app\components\HintIconWidget::widget(['model'=>'\app\models\Arms','cssClass'=>'btn']), 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, ]);
Columns
Передаваемые колонки не совсем те, которые требуется для yii2-gridview или же kartik-v/yii2-grid: yii-grid-datacolumn
Им конечно можно было передавать класс, но уже есть куча классных классов , поэтому сделал просто обертку над ними всеми для унификации вывода
format
По умолчанию raw (вместо text)
label
Если не задано явно, то ищется по алгоритму
$model->getAttributeIndexLabel($attr)
Это добавлено, проверяется наличие такого метода, он добавлен в getAttributeIndexLabel
дальше как и в DataColumn
$model->getAttributeLabel($attr))
и потом уже
camel2words($attr)
hint
такого атрибута нет ни в DataColumn ни в Column
Если он указан, то к Label добавляется hint
Если не указан явно, то проверяется
$model->getAttributeIndexLabel($attr)
model
если атрибут ссылается на другую модель
например атрибут name of user of computer
тогда можно прописать следующим образом:
$columns=[ 'user_name'=>[ 'attribute'=>name, 'model'=new app\models\Users, ] ];
тогда все лейблы и хинты будут подтягиваться из модели пользователя