Как изменить представление данных в таблице?
Как изменить представление данных в таблице?
Всем привет!
Подскажите, пожалуйста, по такому вопросу.
Есть табличка в базе, один из столбцов - integer.
Можно как-то сделать так, чтобы при выводе этой таблички с помощью gridview,
в данном столбце подставлялись другие значения, соответствующие числам?
например, вместо 1=>'один', вместо 2=>'два' итд?
и сразу второй вопрос, можно ли к имеющейся таблице gridview добавить свой столбец, который будет отображать данные подобным способом? Чтобы был и столбец числовых значений, и соответствующие им текстовые?
p.s. всё сделано штатным образом - из gii модель для таблицы и вьюха.
заранее спасибо.
Подскажите, пожалуйста, по такому вопросу.
Есть табличка в базе, один из столбцов - integer.
Можно как-то сделать так, чтобы при выводе этой таблички с помощью gridview,
в данном столбце подставлялись другие значения, соответствующие числам?
например, вместо 1=>'один', вместо 2=>'два' итд?
и сразу второй вопрос, можно ли к имеющейся таблице gridview добавить свой столбец, который будет отображать данные подобным способом? Чтобы был и столбец числовых значений, и соответствующие им текстовые?
p.s. всё сделано штатным образом - из gii модель для таблицы и вьюха.
заранее спасибо.
Re: Как изменить представление данных в таблице?
create method in ur model:
configure grid column
Код: Выделить всё
//public $status; //attribute|column of table
public function getStatusLabel()
{
return [
'1' => 'Adin',
'2' => 'Dva',
];
}
Код: Выделить всё
[
'attribute' => 'status'
'value' => 'statusLabel'
]
Re: Как изменить представление данных в таблице?
1 вариант.
Model:
Grid:
2 вариант
Grid:
Model:
Код: Выделить всё
public function getStatus()
{
if($this->status == 1 ) return 'One';
elseif($this->status == 2 ) return 'Two';
}
Код: Выделить всё
[
'attribute' => 'status'
]
Grid:
Код: Выделить всё
[
'attribute' => 'status
'content' = function($model){
if($model['status'] ==1 ) return 'One';
elseif($model['status'] ==2) return 'Two';
}
]
Re: Как изменить представление данных в таблице?
чёто не работает ни один из вариантов, комрады..
куда копать, если в логах пусто?..
куда копать, если в логах пусто?..
Re: Как изменить представление данных в таблице?
Варианты рабочие. Где-то ошибка.
Принтаните выборку,проверьте наличие данных в базе.
Принтаните выборку,проверьте наличие данных в базе.
Re: Как изменить представление данных в таблице?
видимо, у меня на лог права слетели
Alex8552 ,
твои варианты работают, но этот заголовок у этого столбца получается неактивным и его нет возможности отсортировать
Этот вариант выдаёт эксепшенlynicidn писал(а):create method in ur model:configure grid columnКод: Выделить всё
//public $status; //attribute|column of table public function getStatusLabel() { return [ '1' => 'Adin', '2' => 'Dva', ]; }
Код: Выделить всё
[ 'attribute' => 'status' 'value' => 'statusLabel' ]
Код: Выделить всё
2015-04-22 10:41:34 [127.0.0.1][1][-][error][yii\base\ErrorException:2] exception 'yii\base\ErrorException' with message 'htmlspecialchars() expects parameter 1 to be string, array given' in /var/www/html/vendor/yiisoft/yii2/helpers/BaseHtml.php:105
Alex8552 ,
твои варианты работают, но этот заголовок у этого столбца получается неактивным и его нет возможности отсортировать
Re: Как изменить представление данных в таблице?
Сортировку явно задаете? Код провайдера в студию
Re: Как изменить представление данных в таблице?
В случае ексепшена метод getStatusLabel() должен возвращать string,т.е нужный вам текст,например как пример getStatus() выше
Re: Как изменить представление данных в таблице?
да, я забыл про это, простите врунишкуAlex8552 писал(а):В случае ексепшена метод getStatusLabel() должен возвращать string,т.е нужный вам текст,например как пример getStatus() выше
Код: Выделить всё
public function getStatusLabel()
{
return $this->statusLabels[$this->status];
}
public static function getStatusLabels()
{
return ['1' => 'Adin', '2' => 'Dva'];
}
п.с. пишу же от руки на коленке
Re: Как изменить представление данных в таблице?
Да что явно задаю что не задаю вообще - всё равно не активен заголовок.Alex8552 писал(а):Сортировку явно задаете? Код провайдера в студию
Код: Выделить всё
$provider = new ActiveDataProvider([
'query' => Finances::find()->where(['userid' => Yii::$app->user->identity->username ])
->orderBy(['timestamp' => SORT_DESC]),
'pagination' => [
'pageSize' => 15,
],
]);
Re: Как изменить представление данных в таблице?
с вымышленным аттрибутом больше проблем, я предложил оптимальное решение, к которому пришел и которое взял для себя за стандарт
Re: Как изменить представление данных в таблице?
да, твой вариант сортируется )lynicidn писал(а):с вымышленным аттрибутом больше проблем, я предложил оптимальное решение, к которому пришел и которое взял для себя за стандарт
Re: Как изменить представление данных в таблице?
Проблем то...явно задать сортировку.
Код: Выделить всё
$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',
],
],
]);
$dataProvider->setSort($sort);
Re: Как изменить представление данных в таблице?
у меня решение в 2 строки в гриде + 5-6 строк в модели, которые реюзабельны, приведите профиты от ваших методов, возможно я тоже их буду использовать, правда не люблю анонимки во вьюAlex8552 писал(а):Проблем то...явно задать сортировку.Код: Выделить всё
$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', ], ], ]); $dataProvider->setSort($sort);
Re: Как изменить представление данных в таблице?
Ну в моем случае 1 строка в гриде,2-3 в моделе,не считая сортировки,которую я в любом случае задаю явно ибо приджойненые поля по дефолту не сортируются.
Re: Как изменить представление данных в таблице?
Пошёл по вашему следу и вот что у меня получилось, ниже
Но не доходит, как сюда иконки Bootstrap навесить? на каждый статус разную бы
Поможите?
View
Model
Но не доходит, как сюда иконки Bootstrap навесить? на каждый статус разную бы
Поможите?
View
Код: Выделить всё
[
'format' => 'raw',
'attribute' => 'action',
'value' => 'statusLabel',
'hAlign'=>'center',
'vAlign'=>'middle',
],
Код: Выделить всё
public function getStatusLabel()
{
return $this->statusLabels[$this->action];
}
public static function getStatusLabels()
{
return [
'0' => 'Заблок.',
'1' => 'Одобрено',
'2' => 'Авто.Блок.',
'3' => 'Ожидает'
];
}
Re: Как изменить представление данных в таблице?
Может кому будет полезно, поправил вторую функцию в модели для того чтобы иконки показывало
но наверное так не кошерно, поправьте если что
но наверное так не кошерно, поправьте если что
Код: Выделить всё
public static function getStatusLabels()
{
return [
'0' => '<span class="glyphicon glyphicon-lock" title="Заблокировано"></span>',
'1' => '<span class="glyphicon glyphicon-ok" title="Опубликовано"></span>',
'2' => '<span class="glyphicon glyphicon-minus" title="Автоматически заблокировано"></span>',
'3' => '<span class="glyphicon glyphicon-time" title="Ожидает проверки модератором"></span>'
];
}