'require|checkGoods', // 'status' => 'require|in:1,2', 'spec_value_list' => 'require|array|checkSpec', ]; protected $message = [ 'id.require' => '请选择商品', 'status.require' => '请选择商品状态', 'status.in' => '商品状态错误', 'spec_value_list.require' => '请选择商品规格', 'spec_value_list.array' => '商品规格数据错误' ]; protected function sceneId() { return $this->only(['id']); } protected function sceneEdit() { return $this->only(['id','spec_value_list']); } protected function checkGoods($value,$rule,$data) { $goods = Goods::findOrEmpty($value); if($goods->isEmpty()){ return '商品不存在'; } return true; } protected function checkSpec($value,$rule,$data) { foreach ($value as $spec) { if(!isset($spec['id']) || empty($spec['id'])){ return '商品规格id错误'; } if(empty($spec['sell_price']) || $spec['sell_price'] < 0){ return '商品售价错误'; } if($spec['cost_price'] < 0){ return '商品成本价不能小于零'; } if($spec['stock'] < 0){ return '商品库存不能小于零'; } } return true; } }