HI, i have install kartik tree manager and i follow the guide.
but when i try to create a root note I get this error in my browser console.
<![CDATA[YII-BLOCK-HEAD]]><![CDATA[YII-BLOCK-BODY-BEGIN]]>{“out”:”Calling unknown method: common\\models\\Pages::isLeaf()”,”status”:”error”}
This is my model
<?php
namespace common\models;
use Yii;
use yii\db\ActiveRecord;
use yii\behaviors\TimestampBehavior;
/**
* This is the model class for table "pages".
*
* @property int $id
* @property string $pages_name Indica il nome della pagina
* @property string $pages_tag Indica il tipo di pagina ovvero il modello di riferimento
* @property int $pages_visibility Indica se la pagina è visibile oppure no
* @property string|null $pages_meta_description
* @property string|null $pages_meta_keywords
* @property string|null $pages_meta_title
* @property int|null $created_at
* @property int|null $updated_at
*/
class Pages extends ActiveRecord
{
use \kartik\tree\models\TreeTrait;
/**
* @var string the classname for the TreeQuery that implements the NestedSetQueryBehavior.
* If not set this will default to `kartik ree\models\TreeQuery`.
*/
public static $treeQueryClass; // change if you need to set your own TreeQuery
/**
* @var bool whether to HTML encode the tree node names. Defaults to `true`.
*/
public $encodeNodeNames = true;
/**
* @var bool whether to HTML purify the tree node icon content before saving.
* Defaults to `true`.
*/
public $purifyNodeIcons = true;
/**
* @var array activation errors for the node
*/
public $nodeActivationErrors = [];
/**
* @var array node removal errors
*/
public $nodeRemovalErrors = [];
/**
* @var bool attribute to cache the `active` state before a model update. Defaults to `true`.
*/
public $activeOrig = true;
/**
* {@inheritdoc}
*/
public static function tableName()
{
return 'pages';
}
public function behaviors( ) {
return [
[
'class' => TimestampBehavior::class,
'attributes' => [
ActiveRecord::EVENT_BEFORE_INSERT => ['created_at','updated_at'],
ActiveRecord::EVENT_BEFORE_UPDATE => ['updated_at'],
],
],
//Sortable --> da installare
/*[
'class' => 'sjaakp\sortable\Sortable',
'orderAttribute' => 'pages_ord',
],*/
];
}
/**
* {@inheritdoc}
*/
public function rules()
{
return [
[['pages_name', 'pages_tag'], 'required'],
[['pages_visibility', 'created_at', 'updated_at'], 'integer'],
[['pages_meta_description', 'pages_meta_keywords'], 'string'],
[['pages_name', 'pages_tag','pages_meta_title'], 'string', 'max' => 255],
];
}
/**
* {@inheritdoc}
*/
public function attributeLabels()
{
return [
'id' => Yii::t('backend', 'ID'),
'pages_name' => Yii::t('backend', 'Pages Name'),
'pages_tag' => Yii::t('backend', 'Pages Tag'),
'pages_visibility' => Yii::t('backend', 'Pages Visibility'),
'pages_meta_description' => Yii::t('backend', 'Pages Meta Description'),
'pages_meta_keywords' => Yii::t('backend', 'Pages Meta Keywords'),
'pages_meta_title' => Yii::t('backend', 'Pages Meta Title'),
'created_at' => Yii::t('backend', 'Created At'),
'updated_at' => Yii::t('backend', 'Updated At'),
];
}
/**
* Relation with junction table pagesxblock many to many with Block table
*/
public function getBlocks() {
return $this->hasMany(Block::className(), ['id' => 'id_block'])
->viaTable('pagesxblock', ['id_pages' => 'id']);
}
}and this is my View
use kartik\tree\TreeView;
use common\models\Pages;
echo TreeView::widget([
// single query fetch to render the tree
// use the Product model you have in the previous step
'query' => Pages::find()->addOrderBy('root, lft'),
'headingOptions' => ['label' => 'Categories'],
'fontAwesome' => false, // optional
'isAdmin' => false, // optional (toggle to enable admin mode)
'displayValue' => 1, // initial display value
'softDelete' => true, // defaults to true
'cacheSettings' => [
'enableCache' => true // defaults to true
]
]);I don't understand where I'm going wrong Can someone point me to the right direction?
UPDATE I isolated the part of the code that gives me the error and refers to this inside the model:
<code data-highlighted="yes"></code>
public function behaviors( ) { return [ [ 'class' => TimestampBehavior::class, 'attributes' => [ ActiveRecord::EVENT_BEFORE_INSERT => ['created_at','updated_at'], ActiveRecord::EVENT_BEFORE_UPDATE => ['updated_at'], ], ], ]; }<code data-highlighted="yes"> </code>
yii2-tree-manager Error when using TreeTrait
Federico Edited question January 30, 2025