dynamic / silverstripe-product-wishlist
为您的网站添加产品愿望列表
dev-master / 2.0.x-dev
2023-10-04 15:36 UTC
Requires
- dynamic/silverstripe-additional-formfields: ^2.0
- dynamic/silverstripe-manageable-dataobject: ^2.0
- dynamic/viewable-dataobject: ^2.0
- silverstripe/recipe-cms: ^1.0@dev || ^4.0@dev
- silverstripe/vendor-plugin: ^1@dev
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-04 17:37:32 UTC
README
product-wishlist
允许用户在网站上创建和管理愿望列表。
要求
- silverstripe/recipe-cms ^4.0
- dynamic/viewable-dataobject ^2.0
- dynamic/silverstripe-additional-formfields ^2.0
- dynamic/silverstripe-manageable-dataobject ^2.0
安装
composer require dynamic/silverstripe-product-wishlist
示例用法
此模块未与任何添加产品的特定模块挂钩,以提供灵活性。以下示例将使用 FoxyStripe。
产品愿望列表扩展
必须通过数据扩展将产品关系添加到 Dynamic\Wishlist\Model\ProductWishList
。
Dynamic\Wishlist\Model\ProductWishList: extensions: - Foo\Bar\ORM\WishListExtension
<?php namespace Foo\Bar\ORM; use Dynamic\FoxyStripe\Page\ProductPage; use SilverStripe\ORM\DataExtension; class WishListExtension extends DataExtension { /** * @var array */ private static $many_many = [ 'Products' => ProductPage::class, ]; }
产品关系
产品还必须与愿望列表有互惠关系。
Dynamic\FoxyStripe\Page\ProductPage: extensions: - Foo\Bar\ORM\ProductExtension
<?php namespace Foo\Bar\ORM; use Dynamic\Wishlist\Model\ProductWishList; class ProductExtension extends DataExtension { /** * @var array */ private static $belongs_many_many = [ 'WishLists' => ProductWishList::class, ]; }
愿望列表表单
应将 ProductControllerExtension
应用到处理显示产品的控制器。
Dynamic\FoxyStripe\Page\ProductPageController: extensions: - Dynamic\Wishlist\Extensions\ProductControllerExtension
可以通过传递产品 ID 来避免使用当前控制器的页面 ID。如果用户未登录,则不会显示表单。
添加到愿望列表表单和从愿望列表中删除表单
这些表单之间唯一的真正区别是它们调用的操作和额外的类。
更新愿望列表
这是一个更新下拉字段中可见愿望列表的扩展点。它传递与当前用户关联的愿望列表的 DataList
。
/** * @param SilverStripe\ORM\DataList $lists */ public function updateWishLists($lists) { // Stuff here }
更新字段
这是一个更新表单字段的扩展点。它传递一个 FieldList
和一个整数值。
/** * @param SilverStripe\Forms\FieldList $fields * @param int $productID */ public function updateFields($fields, $productID) { // Stuff here }
更新操作
这是一个更新表单操作的扩展点。它传递一个 FieldList
和一个整数值。
/** * @param SilverStripe\Forms\FieldList $actions * @param int $productID */ public function updateActions($actions, $productID) { // Stuff here }
愿望列表表单处理
默认情况下不包含处理 addToWishList
和 removeFromWishList
操作。示例实现应在控制器上,或应用于控制器的扩展中。
添加到愿望列表示例
/** * @param $data * @param \SilverStripe\Forms\Form $form * @return \SilverStripe\Control\HTTPResponse * @throws \Exception */ public function addToWishList($data, Form $form) { /** @var ProductWishList|\Foo\Bar\Extension\WishListExtension $list */ $list = ProductWishList::get()->filter([ 'ID' => $data['List'], ])->first(); $list->Products()->add($data['ProductID']); return $this->owner->redirectBack(); }
从愿望列表中删除示例
/** * @param $data * @param \SilverStripe\Forms\Form $form * @return \SilverStripe\Control\HTTPResponse * @throws \Exception */ public function removeFromWishList($data, Form $form) { /** @var ProductWishList|\Foo\Bar\Extension\WishListExtension $list */ $list = ProductWishList::get()->filter([ 'ID' => $data['List'], ])->first(); $list->Products()->removeByID($data['ProductID']); return $this->owner->redirectBack(); }
文档
请参阅 docs/en 文件夹。