TreeView widget. Просьба в помощи.

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Закрыто
yip
Сообщения: 13
Зарегистрирован: 2019.04.18, 10:52

TreeView widget. Просьба в помощи.

Сообщение yip »

Здравствуйте.
Пожалуйста, помогите разобраться с модулем от https://www.yiiframework.com/extension/ ... 2-treeview

При подключении модуля, как указано в инструкции пользования, получаю ошибку, хотя от автора указано что свойство по умолчанию 0:
Getting unknown property: common\models\Test::depth

Код: Выделить всё

www/vendor/koperdog/yii2-treeview/base/TreeHelper.php at line 66– yii\db\BaseActiveRecord::__get('depth')

Код: Выделить всё

        $tree = [];
 
        foreach ($models as $n) {
            $node = &$tree;
 
            for ($depth = $models[0]->depth; $n->depth > $depth; $depth++) {
                $node = &$node[count($node) - 1]->children;
            }
            $n->children = null;
            $node[] = $n;
        }
Моя модель:

Код: Выделить всё

<?php

namespace common\models;

use Yii;

class Test extends \yii\db\ActiveRecord
{
    public $children = null;

    public static function tableName()
    {
        return '{{%test}}';
    }

    public function rules()
    {
        return [
            [['name'], 'required'],
            [['parent_id', 'created_at'], 'integer'],
            [['name'], 'string', 'max' => 250],
            [['name'], 'unique'],
        ];
    }

    public function attributeLabels()
    {
        return [
            'id' => Yii::t('app', 'ID'),
            'name' => Yii::t('app', 'NAME'),
            'parent_id' => Yii::t('app', 'PARENT'),
            'created_at' => Yii::t('app', 'CREATED_AT'),
        ];
    }
}
Модель Поиска:

Код: Выделить всё

<?php
namespace common\models;

use yii\base\Model;
use yii\data\ActiveDataProvider;
use common\models\Test;

class TestSearch extends Test
{

    public function rules()
    {
        return [
            [['id', 'parent_id', 'created_at'], 'integer'],
            [['name'], 'safe'],
        ];
    }

    public function scenarios()
    {
        return Model::scenarios();
    }

    public function search($params)
    {
        $query = Test::find();

        $dataProvider = new ActiveDataProvider([
            'query' => $query,
            'pagination' => [
                'pageSize' => 10,
            ],
        ]);

        $this->load($params);

        if (!$this->validate()) {
            return $dataProvider;
        }

        $query->andFilterWhere([
            'id' => $this->id,
            'parent_id' => $this->parent_id,
            'created_at' => $this->created_at,
        ]);

        $query->andFilterWhere(['like', 'name', $this->name]);

        return $dataProvider;
    }
}
Сетка:

Код: Выделить всё

<?php
use koperdog\yii2treeview\TreeView;

$this->title = Yii::t('app', 'Tests');
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="test-index">
  <?= TreeView::widget([
	'dataProvider'  => $dataProvider,
        'filterModel' => $searchModel,
	//'depthPrefix' => ' - ', //see Additional options
	//'depthRoot'   => 0, //see Additional options
	//'collaplse'   => true, //see Additional options
        'columns' => [
            'id',
            'name',
	],
      
    ]); ?>
</div>
w3Color - создан на Yii2
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: TreeView widget. Просьба в помощи.

Сообщение rak »

из описания пакета
Widget to display the nested sets tree as a grid
а в модели судя по полям - adjacency list
yip
Сообщения: 13
Зарегистрирован: 2019.04.18, 10:52

Re: TreeView widget. Просьба в помощи.

Сообщение yip »

rak писал(а): 2021.01.18, 16:46 из описания пакета
Widget to display the nested sets tree as a grid
а в модели судя по полям - adjacency list
Да, если я правильно Вас понимаю то я должен расширять модель Test связью:

Код: Выделить всё

    public function getParent() {
        return $this->hasOne(Test::className(), ['id' => 'parent_id'])
                    ->from(['t2' => Test::tableName()]);
    }
w3Color - создан на Yii2
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: TreeView widget. Просьба в помощи.

Сообщение rak »

yip писал(а): 2021.01.18, 16:55
rak писал(а): 2021.01.18, 16:46 из описания пакета
Widget to display the nested sets tree as a grid
а в модели судя по полям - adjacency list
Да, если я правильно Вас понимаю то я должен расширять модель Test связью:

Код: Выделить всё

    public function getParent() {
        return $this->hasOne(Test::className(), ['id' => 'parent_id'])
                    ->from(['t2' => Test::tableName()]);
    }
да, но этот виджет использовать не получится, он не предназначен для AL
yip
Сообщения: 13
Зарегистрирован: 2019.04.18, 10:52

Re: TreeView widget. Просьба в помощи.

Сообщение yip »

rak писал(а): 2021.01.18, 17:00 да, но этот виджет использовать не получится, он не предназначен для AL
Можете показать пример наброски для модели типа nested sets tree as a grid
w3Color - создан на Yii2
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: TreeView widget. Просьба в помощи.

Сообщение rak »

yip писал(а): 2021.01.18, 17:05
rak писал(а): 2021.01.18, 17:00 да, но этот виджет использовать не получится, он не предназначен для AL
Можете показать пример наброски для модели типа nested sets tree as a grid
https://github.com/creocoder/yii2-nested-sets
+
https://demos.krajee.com/tree-manager или koperdog/yii2-treeview, смотря что нужно
yip
Сообщения: 13
Зарегистрирован: 2019.04.18, 10:52

Re: TreeView widget. Просьба в помощи.

Сообщение yip »

Больше подходит koperdog/yii2-treeview.
Ок, спасибо за помощь, разберусь дам знать..
w3Color - создан на Yii2
yip
Сообщения: 13
Зарегистрирован: 2019.04.18, 10:52

Re: TreeView widget. Просьба в помощи.

Сообщение yip »

rak писал(а): 2021.01.18, 17:10
Спасибо за помощь, уже разобрался и использую в проекте таблицу Nested Sets.
w3Color - создан на Yii2
Закрыто