Laravel 和 Rails 中的购物车添加请求验证
{/u0022title/u0022:/u0022Laravel /u548c Rails /u4e2d/u7684/u8d2d/u7269/u8f66/u6dfb/u52a0/u8bf7/u6c42/u9a8c/u8bc1/u0022, /u0022description/u0022:/u0022/u672c/u6587/u5bf9/u6bd4/u4e86 Laravel /u548c Rails /u6846/u67b6/u4e2d/u8d2d/u7269/u8f66/u6dfb/u52a0/u8bf7/u6c42/u9a8c/u8bc1/u7684/u5b9e/u73b0/u65b9/u5f0f/uff0c/u5c55/u793a/u4e86/u4e24/u79cd/u6846/u67b6/u7684/u4ee3/u7801/u7ed3/u6784/u548c/u9a8c/u8bc1/u903c/u8f91/u7684/u5dee/u522b/uff0c/u5e76/u8bf4/u660e/u4e86/u5404/u81ea/u7684/u4f18/u70b9/u548c/u7f3a/u70b9/u3002/u0022, /u0022keywords/u0022:/u0022Laravel, Rails, /u8d2d/u7269/u8f66, /u6dfb/u52a0, /u9a8c/u8bc1, /u4ee3/u7801, /u5bf9/u6bd4, /u6846/u67b6/u0022, /u0022content/u0022:/u0022/u003c?php/n/nnamespace App//Http//Requests;/n/nuse App//Models//ProductSku;/n/nclass AddCartRequest extends Request/n{/n public function rules()/n {/n return [/n /u0027sku_id/u0027 => [/n /u0027required/u0027,/n function (/$attribute, /$value, /$fail)/n {/n if (!/$sku = ProductSku::find(/$value))/n {/n /$fail(/u0027/u8be5/u5546/u54c1/u4e0d/u5b58/u5728/u0027);/n return;/n }/n if (!/$sku->product->on_sale)/n {/n /$fail(/u0027/u8be5/u5546/u54c1/u672a/u4e0a/u67b6/u0027);/n return;/n }/n if (/$sku->stock === 0)/n {/n /$fail(/u0027/u8be5/u5546/u54c1/u5df2/u552e/u5b8c/u0027);/n return;/n }/n if (/$this->input(/u0027amount/u0027) /u003e 0 && /$sku->stock /u003c /$this->input(/u0027amount/u0027))/n {/n /$fail(/u0027/u8be5/u5546/u54c1/u5e93/u5b58/u4e0d/u8db3/u0027);/n return;/n }/n },/n ],/n /u0027amount/u0027 => [/u0027required/u0027, /u0027integer/u0027, /u0027min:1/u0027],/n ];/n }/n/n public function attributes()/n {/n return [/n /u0027amount/u0027 => /u0027/u5546/u54c1/u6570/u91cf/u0027/n ];/n }/n/n public function messages()/n {/n return [/n /u0027sku_id.required/u0027 => /u0027/u8bf7/u9009/u62e9/u5546/u54c1/u0027/n ];/n }/n}/n/n/u6539/u6210 rails /u4ee3/u7801/u5185/u5bb9:class AddCartRequest /u003c ApplicationRecord/n belongs_to :product_sku/n/n validates :product_sku_id, presence: true, uniqueness: true/n validates :amount, presence: true, numericality: { only_integer: true, greater_than: 0 }/n/n validate :check_product_sku/n/n private/n/n def check_product_sku/n if product_sku.nil?/n errors.add(:product_sku_id, /u0027/u8be5/u5546/u54c1/u4e0d/u5b58/u5728/u0027)/n elsif !product_sku.product.on_sale/n errors.add(:product_sku_id, /u0027/u8be5/u5546/u54c1/u672a/u4e0a/u67b6/u0027)/n elsif product_sku.stock == 0/n errors.add(:product_sku_id, /u0027/u8be5/u5546/u54c1/u5df2/u552e/u5b8c/u0027)/n elsif amount.present? && amount /u003e product_sku.stock/n errors.add(:amount, /u0027/u8be5/u5546/u54c1/u5e93/u5b58/u4e0d/u8db3/u0027)/n end/n end/nend
原文地址: https://www.cveoy.top/t/topic/pXLx 著作权归作者所有。请勿转载和采集!