You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
1.8 KiB
84 lines
1.8 KiB
<?php |
|
|
|
namespace core\entities; |
|
|
|
use paulzi\nestedsets\NestedSetsBehavior; |
|
use core\behaviors\MetaBehavior; |
|
use yii\db\ActiveRecord; |
|
use core\entities\Meta; |
|
use Yii; |
|
|
|
/** |
|
* @property integer $id |
|
* @property string $title |
|
* @property string $slug |
|
* @property string $content |
|
* @property string meta_json |
|
* @property integer $lft |
|
* @property integer $rgt |
|
* @property integer $depth |
|
* @property Meta $meta |
|
* |
|
* @property Page $parent |
|
* @property Page[] $parents |
|
* @property Page[] $children |
|
* @property Page $prev |
|
* @property Page $next |
|
* @mixin NestedSetsBehavior |
|
*/ |
|
class Page extends ActiveRecord |
|
{ |
|
public $meta; |
|
|
|
public static function create($title, $slug, $content, Meta $meta): self |
|
{ |
|
$page = new static(); |
|
$page->title = $title; |
|
$page->slug = $slug; |
|
$page->content = $content; |
|
$page->meta = $meta; |
|
return $page; |
|
} |
|
|
|
public function edit($title, $slug, $content, Meta $meta): void |
|
{ |
|
$this->title = $title; |
|
$this->slug = $slug; |
|
$this->content = $content; |
|
$this->meta = $meta; |
|
} |
|
|
|
public function getSeoTitle(): string |
|
{ |
|
return $this->meta->title ?: $this->title; |
|
} |
|
|
|
public static function tableName(): string |
|
{ |
|
return '{{%pages}}'; |
|
} |
|
|
|
public function behaviors(): array |
|
{ |
|
return [ |
|
MetaBehavior::class, |
|
NestedSetsBehavior::class, |
|
]; |
|
} |
|
|
|
public function transactions(): array |
|
{ |
|
return [ |
|
self::SCENARIO_DEFAULT => self::OP_ALL, |
|
]; |
|
} |
|
|
|
public function attributeLabels() { |
|
return [ |
|
'title' => Yii::t('page', 'Title'), |
|
'slug' => Yii::t('page', 'Slug'), |
|
'id' => Yii::t('page', 'ID'), |
|
'content' => Yii::t('page', 'Content'), |
|
]; |
|
} |
|
} |