SilverStripe 定制购物车

SilverStripe custom shopping cart

我在 SilverStripe 中从头开始创建网上商店,没有使用商店模块。我在创建购物车时遇到问题。

如果我要在没有任何 CMS 系统的情况下创建一个网上商店,我会创建 3 个 table。一个 User table,一个 Product table 和一个 Order table。

Order table 中将存储一个 ID 用于订单,一个 UserID link 给用户,一个 ProductID link 一个产品和一个 Quantity

因为我使用的是 SilverStripe,所以我不能直接这样做。我可以像那样创建 tables,但因为它不是创建的目的,而且 运行 查询不是这样做的方法。

如何使用 SilverStripe 正确执行此操作?

我知道 SilverStripe 的各种开源购物模块,但我发现它们令人困惑,而且我不知道它们如何相互 link。

您可以让 SilverStripe 通过扩展其 DataObjectPage classes 为您创建数据库表。

以下代码适用于 SilverStripe 3.1。

这里是如何创建 UserProductOrder classes 来创建你想要的数据库表,具有描述的关系。我还添加了一个 OrderItem class,因为我认为这很有意义。

class User extends DataObject {

    private static $db = array(
        'FirstName' => 'Text',
        'LastName' => 'Text',
        'Email' => 'Text'
    );
}

class Product extends DataObject {

    private static $db = array(
        'Title' => 'Text',
        'Price' => 'Decimal(19,8)'
    );
}

class Order extends DataObject {

    private static $has_one = array(
        'User' => 'User'
    );

    private static $has_many = array(
        'OrderItems' => 'OrderItem'
    );
}

class OrderItem extends DataObject {

    private static $has_one = array(
        'Order' => 'Order',
        'Product' => 'Product',
        'Quantity' => 'Int'
    );
}

创建这些 classes 运行 dev/build?flush=1 后,然后查看已在数据库中创建的表。

对于 Product,如果您希望产品以页面形式显示给用户,您可以扩展 Page 而不是 DataObject。这由你决定。

使用 SilverStripe 管理您的 classes、关系和数据库。这就是它的用途。

如果您想要 SilverStripe 中的优秀商店模块,我建议您查看 SwipeStripe. Or if you do want to build this yourself you can check out SwipeStripe's source code on git 以了解他们是如何做事的。