Разработка сайтов на WordPress и фреймворке Yii2

Здесь Вы можете заказать полный пакет услуг по разработке сайта. Начиная от написания ТЗ до программирования на PHP, JavaScript и верстке.

Свои Grid колонки в фреймворке Yii2

Фреймворк Yii2

Продолжаю пополнять свой багаж знаний в Yii2.
О своих колонках в Grid слышал конечно же, но на практике не использовал. Но когда дубляж кода дошел до 5ти штук в разных местах. Вот и задумался, а почему бы и не попробовать? И казалось довольно не плохо и удобно. А главное гибко!

Ниже приведен полный листинг кода примера колонки наследуемой от DataColumn:

namespace backend\grid;

use Yii;
use yii\helpers\Html;
use yii\grid\DataColumn;

class ActiveColumn extends DataColumn
{
	public $headerOptions = [
		'style' => 'width: 80px;'
	];
	
	public $contentOptions = [
		'class' => 'text-center'
	];
	
	public $attribute = 'is_active';
	
    /**
     * @inheritdoc
     */
    protected function renderDataCellContent($a)
    {
		if($a['is_active'] == 1)
		{
			return Html::a('<span class="glyphicon glyphicon-ok-circle"></span>', [
					'active', 'id' => $a['id'], 'is_active' => 0], [
					'title' => Yii::t('app', 'Unactivate this'),
					'data-pjax' => '0',
				]
			);
		}
		return Html::a('<span class="glyphicon glyphicon-lock"></span>', [
				'active', 'id' => $a['id'], 'is_active' => 1], [
				'title' => Yii::t('app', 'Activate this'),
				'data-pjax' => '0',
			]
		);
    }
}

Уверен, тому кто сталкивался хоть раз с GridView в Yii тот знает некоторые параметры. Но я бы остановился на:

public $attribute = 'is_active';

он определяет название поля в БД по которому будет идти поиск Label в модели и соответственно сортировка, при клике по названию поля в таблице (то что в хеадере).

Как использовать? Просто, GridView указываем название нашего класса, и если нужно параметры.

...
echo GridView::widget([
	'dataProvider' => $dataProvider,
	'columns' => [

		['class' => ActiveColumn::className()],
		
	],
]);
...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *