CarouselItem.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?php
  2. namespace common\models;
  3. use common\behaviors\PositionBehavior;
  4. use common\behaviors\CacheInvalidateBehavior;
  5. use common\modules\attachment\behaviors\UploadBehavior;
  6. use Yii;
  7. use yii\behaviors\TimestampBehavior;
  8. use yii\db\ActiveRecord;
  9. /**
  10. * This is the model class for table "carousel_item".
  11. *
  12. * @property integer $id
  13. * @property integer $carousel_id
  14. * @property string $image
  15. * @property string $url
  16. * @property string $caption
  17. * @property string $subtitle
  18. * @property integer $status
  19. * @property integer $sort
  20. * @property integer $height
  21. *
  22. * @property Carousel $carousel
  23. */
  24. class CarouselItem extends ActiveRecord
  25. {
  26. const STATUS_DRAFT = 0;
  27. const STATUS_ACTIVE = 1;
  28. /**
  29. * @inheritdoc
  30. */
  31. public static function tableName()
  32. {
  33. return '{{%carousel_item}}';
  34. }
  35. public function scenarios()
  36. {
  37. $scenarios = parent::scenarios();
  38. $key = array_search('carousel_id', $scenarios[self::SCENARIO_DEFAULT], true);
  39. $scenarios[self::SCENARIO_DEFAULT][$key] = '!carousel_id';
  40. return $scenarios;
  41. }
  42. public function behaviors()
  43. {
  44. return [
  45. TimestampBehavior::className(),
  46. [
  47. 'class' => PositionBehavior::className(),
  48. 'positionAttribute' => 'sort',
  49. 'groupAttributes' => ['carousel_id']
  50. ],
  51. 'cacheInvalidate' => [
  52. 'class' => CacheInvalidateBehavior::className(),
  53. 'keys' => [
  54. function ($model) {
  55. return [
  56. Carousel::className(),
  57. $model->carousel->key
  58. ];
  59. }
  60. ]
  61. ]
  62. ];
  63. }
  64. /**
  65. * @inheritdoc
  66. */
  67. public function rules()
  68. {
  69. return [
  70. [['carousel_id'], 'required'],
  71. [['carousel_id', 'status', 'sort', 'height'], 'integer'],
  72. [['url', 'caption', 'subtitle'], 'string', 'max' => 1024],
  73. ['image', 'safe']
  74. ];
  75. }
  76. /**
  77. * @inheritdoc
  78. */
  79. public function attributeLabels()
  80. {
  81. return [
  82. 'id' => Yii::t('common', 'ID'),
  83. 'carousel_id' => Yii::t('common', 'Carousel ID'),
  84. 'image' => Yii::t('common', 'Image'),
  85. 'url' => Yii::t('common', '小程序页面'),
  86. 'caption' => Yii::t('common', 'Caption'),
  87. 'subtitle' => Yii::t('common', '副标题'),
  88. 'status' => '是否启用',
  89. 'sort' => '排序',
  90. 'height' => '图片高度'
  91. ];
  92. }
  93. public function attributeHints()
  94. {
  95. return [
  96. 'url' => '格式: /pages/index/index?id=1'
  97. ];
  98. }
  99. /**
  100. * @return \yii\db\ActiveQuery
  101. */
  102. public function getCarousel()
  103. {
  104. return $this->hasOne(Carousel::className(), ['id' => 'carousel_id']);
  105. }
  106. }