用途:在 Bagisto 中开发自定义商品类型,以实现订阅、租赁、数字服务或复杂变体等特殊商品行为,并支持类型专属的校验、定价与库存处理。
主要能力:
- 注册商品类型。在 Config/product-types.php 中返回 PHP 数组,每项包含 key(唯一标识)、name(后台下拉显示名)、class(商品类型类的完整命名空间)、sort(下拉排序,可选,默认 0)。
- 定义行为。自定义类继承 Webkul\Product\Type\AbstractType,通过覆写方法控制:isSaleable、haveSufficientQuantity、isStockable、totalQuantity、showQuantityBox、getProductPrices、getPriceHtml、getTypeValidationRules、prepareForCart 等;可用 $additionalViews 增加后台编辑页 Blade 视图,用 $skipAttributes 跳过属性。
- 购物车集成。prepareForCart 在加入购物车前处理数据,可返回错误字符串或附加 additional 数据。
必要用法:
- 创建包结构,例如 mkdir -p packages/Webkul/SubscriptionProduct/src/{Type,Config,Providers}。
- 在服务提供者 register 中用 mergeConfigFrom 合并配置到 product_types。
- 在 composer.json 的 psr-4 中注册命名空间,执行 composer dump-autoload。
- 在 bootstrap/providers.php 注册服务提供者,并执行 php artisan optimize:clear。
- 通过 php artisan tinker 测试类型实例及其方法。
限制与注意:
- 常见问题包括未合并配置、key 与数组键不一致、未注册服务提供者、未执行 dump-autoload、未清缓存、覆写 isSaleable 时未调用 parent::isSaleable()、prepareForCart 未正确处理购物车数据。
- 资料未提供具体收费、价格或平台支持信息。