AddForm.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. <?php
  2. namespace hd\models\goods;
  3. use hd\models\BaseForm;
  4. /**
  5. * 商品添加表单模型
  6. */
  7. class AddForm extends BaseForm
  8. {
  9. /**
  10. * 商品名称
  11. * @var string
  12. */
  13. public $name;
  14. /**
  15. * 商品单价
  16. * @var float
  17. */
  18. public $price;
  19. /**
  20. * 价格类型
  21. * @var int
  22. */
  23. public $priceType;
  24. /**
  25. * 历史销量
  26. * @var int
  27. */
  28. public $sold;
  29. /**
  30. * 花朵数量
  31. * @var int
  32. */
  33. public $flowerNum;
  34. /**
  35. * 重量
  36. * @var float
  37. */
  38. public $weight;
  39. /**
  40. * 商品图片
  41. * @var array
  42. */
  43. public $shopImg;
  44. /**
  45. * 商品封面图
  46. * @var string
  47. */
  48. public $cover;
  49. /**
  50. * 商品库存
  51. * @var int
  52. */
  53. public $stock;
  54. /**
  55. * 商品分类ID
  56. * @var array
  57. */
  58. public $catIds;
  59. /**
  60. * 库存状态
  61. * @var int
  62. */
  63. public $stockSet;
  64. /**
  65. * 商品状态
  66. * @var int
  67. */
  68. public $status;
  69. /**
  70. * 是否需要发货
  71. * @var int
  72. */
  73. public $needSend;
  74. /**
  75. * 运费类型
  76. * @var int
  77. */
  78. public $freightType;
  79. /**
  80. * 自动涨价
  81. * @var int
  82. */
  83. public $autoRise;
  84. /**
  85. * {@inheritdoc}
  86. */
  87. public function rules()
  88. {
  89. return [
  90. // 必填字段验证
  91. [['name'], 'required', 'message' => '请填写商品名称'],
  92. [['priceType'], 'required', 'message' => '请选择价格类型'],
  93. [['catIds'], 'required', 'message' => '请选择商品分类'],
  94. ['weight', 'required', 'message' => '请填写重量'],
  95. // 默认值设置
  96. ['price', 'default', 'value' => 0],
  97. ['flowerNum', 'default', 'value' => 0],
  98. ['sold', 'default', 'value' => 0],
  99. ['catIds', 'default', 'value' => []],
  100. // 数据类型验证
  101. [['name', 'cover'], 'string'],
  102. [['flowerNum', 'stock'], 'integer'],
  103. ['priceType', 'in', 'range' => [0, 1]],
  104. ['price', 'number', 'min' => 0, 'message' => '商品价格必须大于或等于0'],
  105. ['flowerNum', 'number', 'min' => 0, 'message' => '花朵数量必须大于或等于0'],
  106. ['weight', 'number', 'min' => 0, 'message' => '重量必须大于或等于0'],
  107. ['sold', 'integer', 'min' => 0, 'message' => '已售数量必须大于或等于0'],
  108. [['stockSet'], 'in', 'range' => [0, 1]],
  109. [['needSend'], 'in', 'range' => [0, 1]],
  110. [['freightType'], 'in', 'range' => [0, 1]],
  111. [['status'], 'in', 'range' => [0, 1]],
  112. [['autoRise'], 'in', 'range' => [0, 1]],
  113. // 添加条件验证
  114. // ['price', 'required', 'message' => '请填写商品价格', 'when' => function($model) {
  115. // return isset($_POST['priceType']) && $_POST['priceType'] == '1';
  116. // }],
  117. // 数组类型验证
  118. [['shopImg'], 'validateShopImg'],
  119. // 其他业务规则验证
  120. [['flowerNum'], 'number', 'min' => 0, 'message' => '花朵数量必须大于或等于0'],
  121. ];
  122. }
  123. /**
  124. * 验证商品图片
  125. * @param string $attribute 属性名
  126. * @param array $params 参数
  127. */
  128. public function validateShopImg($attribute, $params)
  129. {
  130. if (!empty($this->$attribute) && !is_array($this->$attribute)) {
  131. $this->addError($attribute, '商品图片格式不正确');
  132. }
  133. }
  134. /**
  135. * 获取属性标签
  136. * @return array
  137. */
  138. public function attributeLabels()
  139. {
  140. return [
  141. 'name' => '商品名称',
  142. 'price' => '商品价格',
  143. 'kindId' => '商品种类ID',
  144. 'kindName' => '商品种类名称',
  145. 'flowerNum' => '花朵数量',
  146. 'shopImg' => '商品图片',
  147. 'cover' => '商品封面图',
  148. 'stock' => '商品库存',
  149. 'spu' => '商品编码',
  150. 'autoRise' => '自动涨价',
  151. ];
  152. }
  153. }