资讯专栏INFORMATION COLUMN

Laravel shopping cart : 电商购物车包,线上完美运行中

孙淑建 / 2062人阅读

摘要:购物车在电商场景中基本是必须的一个模块,我们基于进行扩展开发。主要实现了以下扩展购物车数据支持存储增加属性返回。因为购物车可能是或者,因此直接通过属性直接返回相关对象。支持多因为在产品有商城购物车和导购购物车。

我们秉承得益开源社区,也奉献开源社区的原则,我们会陆续将正在线上使用的稳定包提交到 github 上,同时在后续的开源产品中,也会用到,大家可以放心使用。

购物车在电商场景中基本是必须的一个模块,我们基于 overtrue/laravel-shopping-cart 进行扩展开发。

BTW: github 上已经有非常多和优秀的轮子,但是在实际应用场景中,会遇到不满足需求的情况,这个时候就需要改造下。另外貌似又见 overtrue 大神的轮子,主要 overtrue 的轮子很优秀,而且符合国人使用习惯。

主要实现了以下扩展:

购物车数据支持 Database 存储

Item 增加 Model 属性返回。因为购物车可能是 SPU 或者 SKU,因此直接通过 model 属性直接返回相关对象。

支持多 Guard. 因为在 iBrand 产品有商城购物车和导购购物车。

包地址: laravel-shopping-cart
Installation
composer require ibrand/laravel-shopping-cart:~1.0 -vvv
php artisan vendor:publish --provider="iBrandShoppingcartServiceProvider"

低于 Laravel5.5 版本

config/app.php 文件中 "providers" 添加

iBrandShoppingcartServiceProvider::class

config/app.php 文件中 "aliases" 添加

"Cart"=> iBrandShoppingcartFacade::class
Usage Select Storage

You can change data Storage in config/ibrand/cart.php file.

"storage" => iBrandShoppingcartStorageDatabaseStorage::class,
  
"storage" => iBrandShoppingcartStorageSessionStorage::class,

If you use Database Storage, you need to execute php artisan migrate

Add item to cart

Add a new item.

Item | null Cart::add(
                    string | int $id,
                    string $name,
                    int $quantity,
                    int | float $price
                    [, array $attributes = []]
                 );

example:

$row = Cart::add(37, "Item name", 5, 100.00, ["color" => "red", "size" => "M"]);
// Item:
//    id       => 37
//    name     => "Item name"
//    qty      => 5
//    price    => 100.00
//    color    => "red"
//    size     => "M"
//    total    => 500.00
//    __raw_id => "8a48aa7c8e5202841ddaf767bb4d10da"
$rawId = $row->rawId();// get __raw_id
$row->qty; // 5
...
Update item

Update the specified item.

Item Cart::update(string $rawId, int $quantity);
Item Cart::update(string $rawId, array $arrtibutes);

example:

Cart::update("8a48aa7c8e5202841ddaf767bb4d10da", ["name" => "New item name");
// or only update quantity
Cart::update("8a48aa7c8e5202841ddaf767bb4d10da", 5);
Get all items

Get all the items.

Collection Cart::all();

example:

$items = Cart::all();
Get item

Get the specified item.

Item Cart::get(string $rawId);

example:

$item = Cart::get("8a48aa7c8e5202841ddaf767bb4d10da");
Remove item

Remove the specified item by raw ID.

boolean Cart::remove(string $rawId);

example:

Cart::remove("8a48aa7c8e5202841ddaf767bb4d10da");
Destroy cart

Clean Shopping Cart.

boolean Cart::destroy();
boolean Cart::clean(); // alias of destroy();

example:

Cart::destroy();// or Cart::clean();

READ MORE: ibrandcc/laravel-shopping-cart

欢迎大家 star 和提交 issue :)
讨论交流

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28122.html

相关文章

  • Laravel 获取当前 Guard 分析 —源自电商物车的实际需求

    摘要:因为客户希望能够直观的看到目前购物车中商品信息,以便推送优惠信息来促使转化。用户在商城中的购物车数据导购使用导购小程序代用户下单或结账时加入的购物车数据,不和用户购物车数据同步。 iBrand 产品中关于购物车的需求比较复杂,我们基于 overture/laravel-shopping-cart 扩展出了更加符合电商需求的购物车包,之前有文章进行过简单的介绍: Laravel shop...

    daydream 评论0 收藏0
  • Redux入门教程(快速上手)

    摘要:接下来演示不变性打开终端并启动输入。修改代码如下我们使用在控制台中打印出当前的状态。可以在控制台中确认新的商品已经添加了。修改和文件最后,我们在中分发这两个保存完代码之后,可以在浏览器的控制台中检查修改和删除的结果。 典型的Web应用程序通常由共享数据的多个UI组件组成。通常,多个组件的任务是负责展示同一对象的不同属性。这个对象表示可随时更改的状态。在多个组件之间保持状态的一致性会是一...

    amuqiao 评论0 收藏0
  • 基于Composer的Laravel扩展开发工作流

    使用场景 在引用第三方包的时候,对第三方包有改动需求,需要将代码放在自己的仓库;并且自己的其他项目也有需求引用自定义的第三方包;甚至自己会发布修改后的第三方包; 读完本文你讲获得: Git Submodule的基本使用 从本地加载第三方包 从自定义仓库地址获取扩展包 快速创建第三方包 本文是在我自己想要创建一个基础第三方包的时候记录下的操作步骤 1、利用git submoudle在已有项目中使...

    Faremax 评论0 收藏0
  • 电商系统设计之用户系统

    摘要:致谢感谢你们看到这里,下一篇我会讲一下关于电商系统的商品设计的部分。 showImg(https://segmentfault.com/img/bVbclTs?w=500&h=329); 电商大伙每天都在用,类似某猫,某狗等。电商系统设计看似复杂又很简单,看似简单又很复杂本章适合初级工程师及中级工程师细看,大佬请随意 前言 设计以以下为工具讲起 PHP为开发语言 基于Laravel框...

    lindroid 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<