jQuery TreeGrid Extension for Yii 2
This is the jQuery TreeGrid extension for Yii 2. It encapsulates TreeGrid component in terms of Yii widgets,
and thus makes using TreeGrid component in Yii applications extremely easy, (*1)
, (*2)
Installation
The preferred way to install this extension is through composer., (*3)
Either run, (*4)
php composer.phar require --prefer-dist leandrogehlen/yii2-treegrid "*"
or add, (*5)
"leandrogehlen/yii2-treegrid": "*"
to the require section of your composer.json
file., (*6)
Usage
Model, (*7)
use yii\db\ActiveRecord;
/**
* @property string $description
* @property integer $parent_id
*/
class Tree extends ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'tree';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['description'], 'required'],
[['description'], 'string'],
[['parent_id'], 'integer']
];
}
}
Controller, (*8)
use yii\web\Controller;
use Yii;
use yii\data\ActiveDataProvider;
class TreeController extends Controller
{
/**
* Lists all Tree models.
* @return mixed
*/
public function actionIndex()
{
$query = Tree::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => false
]);
return $this->render('index', [
'dataProvider' => $dataProvider
]);
}
View, (*9)
use leandrogehlen\treegrid\TreeGrid;
<?= TreeGrid::widget([
'dataProvider' => $dataProvider,
'keyColumnName' => 'id',
'parentColumnName' => 'parent_id',
'parentRootValue' => '0', //first parentId value
'pluginOptions' => [
'initialState' => 'collapsed',
],
'columns' => [
'name',
'id',
'parent_id',
['class' => 'yii\grid\ActionColumn']
]
]); ?>
Adding resources
When is necessary to add other resource files, then should be used the Dependency Injection concept., (*10)
To use the saveState
option it's necessary to add jquery.cookie.js
., (*11)
//config/web.php
$config = [
'id' => 'my-app',
'components' => [
...
]
...
]
Yii::$container->set('leandrogehlen\treegrid\TreeGridAsset',[
'js' => [
'js/jquery.cookie.js',
'js/jquery.treegrid.min.js',
]
]);
return $config;