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 通过扩展其 DataObject
和 Page
classes 为您创建数据库表。
以下代码适用于 SilverStripe 3.1。
这里是如何创建 User
、Product
和 Order
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 以了解他们是如何做事的。
我在 SilverStripe 中从头开始创建网上商店,没有使用商店模块。我在创建购物车时遇到问题。
如果我要在没有任何 CMS 系统的情况下创建一个网上商店,我会创建 3 个 table。一个 User
table,一个 Product
table 和一个 Order
table。
在 Order
table 中将存储一个 ID
用于订单,一个 UserID
link 给用户,一个 ProductID
link 一个产品和一个 Quantity
。
因为我使用的是 SilverStripe,所以我不能直接这样做。我可以像那样创建 tables,但因为它不是创建的目的,而且 运行 查询不是这样做的方法。
如何使用 SilverStripe 正确执行此操作?
我知道 SilverStripe 的各种开源购物模块,但我发现它们令人困惑,而且我不知道它们如何相互 link。
您可以让 SilverStripe 通过扩展其 DataObject
和 Page
classes 为您创建数据库表。
以下代码适用于 SilverStripe 3.1。
这里是如何创建 User
、Product
和 Order
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 以了解他们是如何做事的。