Page.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <?php
  2. namespace app\models;
  3. use yii\helpers\Url;
  4. use Yii;
  5. /**
  6. * This is the model class for table "page".
  7. *
  8. * @property int $id
  9. * @property int $status Скрыть
  10. * @property int $menu Показывать в меню
  11. * @property int $created Время создания
  12. * @property int $updated Время обновления
  13. * @property int|null $create_user_id Создал
  14. * @property int|null $update_user_id Обновил
  15. * @property int $parent_id Родительский раздел
  16. * @property string|null $title Заголовок страницы
  17. * @property string $title_menu Заголовок меню
  18. * @property string $title_seo Title страницы
  19. * @property string|null $description_seo Meta Description
  20. * @property string|null $keywords_seo Meta keywords
  21. * @property string $key Ключевое слово для URL
  22. * @property int $norder Порядок
  23. * @property string|null $path Полный путь
  24. * @property string|null $content Тело страницы
  25. * @property string|null $index_controller Index Controller
  26. * @property string|null $index_action Index Action
  27. * @property string|null $view_controller View Controller
  28. * @property string|null $view_action View Action
  29. * @property string|null $index_params
  30. * @property string $lang Язык страницы
  31. * @property string|null $layout layout
  32. *
  33. * @property User $createUser
  34. * @property User $updateUser
  35. */
  36. class Page extends \yii\db\ActiveRecord
  37. {
  38. /**
  39. * {@inheritdoc}
  40. */
  41. public static function tableName()
  42. {
  43. return 'page';
  44. }
  45. /**
  46. * {@inheritdoc}
  47. */
  48. public function rules()
  49. {
  50. return [
  51. [['status', 'menu', 'create_user_id', 'update_user_id', 'parent_id', 'norder'], 'integer'],
  52. [['title_menu', 'title_seo'], 'required'],
  53. [['content'], 'string'],
  54. [['title', 'title_menu', 'title_seo', 'path', 'index_controller', 'index_action', 'view_controller', 'view_action', 'index_params', 'layout'], 'string', 'max' => 255],
  55. [['description_seo', 'keywords_seo', 'key'], 'string', 'max' => 400],
  56. [['lang'], 'string', 'max' => 3],
  57. [['create_user_id'], 'exist', 'skipOnError' => true, 'targetClass' => User::class, 'targetAttribute' => ['create_user_id' => 'id']],
  58. [['update_user_id'], 'exist', 'skipOnError' => true, 'targetClass' => User::class, 'targetAttribute' => ['update_user_id' => 'id']],
  59. ];
  60. }
  61. /**
  62. * {@inheritdoc}
  63. */
  64. public function attributeLabels()
  65. {
  66. return [
  67. 'id' => 'ID',
  68. 'status' => 'Скрыть',
  69. 'menu' => 'Показывать в меню',
  70. 'created' => 'Время создания',
  71. 'updated' => 'Время обновления',
  72. 'create_user_id' => 'Создал',
  73. 'update_user_id' => 'Обновил',
  74. 'parent_id' => 'Родительский раздел',
  75. 'title' => 'Заголовок страницы',
  76. 'title_menu' => 'Заголовок меню',
  77. 'title_seo' => 'Title страницы',
  78. 'description_seo' => 'Meta Description',
  79. 'keywords_seo' => 'Meta keywords',
  80. 'key' => 'Ключевое слово для URL',
  81. 'norder' => 'Порядок',
  82. 'path' => 'Полный путь',
  83. 'content' => 'Тело страницы',
  84. 'index_controller' => 'Index Controller',
  85. 'index_action' => 'Index Action',
  86. 'view_controller' => 'View Controller',
  87. 'view_action' => 'View Action',
  88. 'index_params' => 'Index Params',
  89. 'lang' => 'Язык страницы',
  90. 'layout' => 'layout',
  91. ];
  92. }
  93. /**
  94. * Gets query for [[CreateUser]].
  95. *
  96. * @return \yii\db\ActiveQuery
  97. */
  98. public function getCreateUser()
  99. {
  100. return $this->hasOne(User::class, ['id' => 'create_user_id']);
  101. }
  102. /**
  103. * Gets query for [[UpdateUser]].
  104. *
  105. * @return \yii\db\ActiveQuery
  106. */
  107. public function getUpdateUser()
  108. {
  109. return $this->hasOne(User::class, ['id' => 'update_user_id']);
  110. }
  111. public static function getPage($url)
  112. {
  113. return self::findOne(['path' => $url]);
  114. }
  115. public function getUrl($full = false):string
  116. {
  117. $base = Url::base('https');
  118. $alias = trim( $this->path );
  119. return ($full ? $base : "")."/".$alias;
  120. }
  121. }