ggggino / skuskucart-bundle
此插件旨在成为一个精简的购物车管理器
2.1.1
2020-02-27 15:58 UTC
Requires
- php: ^5.6|^7.0
- craue/formflow-bundle: ^3.0
- payum/payum-bundle: ^2.3
- php-http/guzzle6-adapter: ^1.1
Requires (Dev)
- doctrine/annotations: ^1.2
- doctrine/common: ^2.4
- doctrine/doctrine-bundle: ^1.6
- doctrine/orm: ^2.5
- sensio/framework-extra-bundle: ^3.0
- symfony/asset: ^3.3|^4.0
- symfony/browser-kit: ^3.3|^4.0
- symfony/cache: ^3.3|^4.0
- symfony/config: ^3.3|^4.0
- symfony/console: ^3.3|^4.0
- symfony/dom-crawler: ^3.3|^4.0
- symfony/form: ^3.3|^4.0
- symfony/http-kernel: ^3.3|^4.0
- symfony/phpunit-bridge: ^3.3|^4.0
- symfony/property-access: ^3.3|^4.0
- symfony/stopwatch: ^3.3|^4.0
- symfony/symfony: 3.3.*
- symfony/templating: ^3.3|^4.0
- symfony/twig-bundle: ^3.3|^4.0
- symfony/validator: ^3.3|^4.0
README
高度可定制的Symfony购物车管理插件。该购物车管理器的目标是实现以下功能:
将此物品添加到购物车
许可协议
安装
1 将插件添加到您的供应商目录
composer require ggggino/skuskucart-bundle
2 在 app/AppKernel.php
中注册插件
$bundles = array( // ... // Multi step form new Craue\FormFlowBundle\CraueFormFlowBundle(), // Payment bundle new Payum\Bundle\PayumBundle\PayumBundle(), // Cart bundle new GGGGino\SkuskuCartBundle\GGGGinoSkuskuCartBundle(), );
3 至少创建一种货币
bin/console ggggino_skusku:currency:create
4 设置默认语言和货币
parameters: locale: it currency: EUR
配置
插件完整配置
# config.yml ggggino_skuskucart: allow_anonymous_shop: false cart_mode: 'single_page' stepform: cart: form_type: GGGGino\SkuskuCartBundle\Form\CartFlowType\CartStep1FormType label: Step 1 chosePayment: form_type: GGGGino\SkuskuCartBundle\Form\CartFlowType\CartStep2FormType label: Step 2 payment: form_type: GGGGino\SkuskuCartBundle\Form\CartFlowType\CartStep3FormType label: Step 3 templates: cart_layout: 'GGGGinoSkuskuCartBundle::cart_page.html.twig' done_layout: 'xxxBundle:xxx:xxx.html.twig'
额外配置
# config.yml parameters: locale: it currency: EUR
添加替换接口的目标实体
# config.yml doctrine: orm: resolve_target_entities: GGGGino\SkuskuCartBundle\Model\SkuskuProductInterface: GGGGino\SkuskuCartBundle\Entity\SkuskuProduct GGGGino\SkuskuCartBundle\Model\SkuskuCustomerInterface: GGGGino\SkuskuCartBundle\Entity\SkuskuUser GGGGino\SkuskuCartBundle\Model\SkuskuCurrencyInterface: GGGGino\SkuskuCartBundle\Entity\SkuskuCurrency GGGGino\SkuskuCartBundle\Model\SkuskuLangInterface: GGGGino\SkuskuCartBundle\Entity\SkuskuLanguage
添加基本路由
# routing.yml skusku: resource: "@GGGGinoSkuskuCartBundle/Controller/" type: annotation
使用 resolve_target_entities
将接口实体替换为具体实体
doctrine: orm: resolve_target_entities: GGGGino\SkuskuCartBundle\Model\SkuskuProductInterface: AppBundle\Entity\Product GGGGino\SkuskuCartBundle\Model\SkuskuCustomerInterface: AnotherBundle\Entity\User GGGGino\SkuskuCartBundle\Model\SkuskuCurrencyInterface: My\CustomBundle\Entity\Currency GGGGino\SkuskuCartBundle\Model\SkuskuLangInterface: ExtraBundle\Entity\Language
每个使用的类都必须实现正确的接口。
-
货币
use GGGGino\SkuskuCartBundle\Model\SkuskuCurrencyInterface; class Currency implements SkuskuCurrencyInterface { }
-
用户
use GGGGino\SkuskuCartBundle\Model\SkuskuCustomerInterface; class User implements SkuskuCustomerInterface { }
-
产品
use GGGGino\SkuskuCartBundle\Model\SkuskuProductInterface; class Product implements SkuskuProductInterface { }
-
语言
use GGGGino\SkuskuCartBundle\Model\SkuskuLangInterface; class Lang implements SkuskuLangInterface { }
如果您需要预构建的实体,可以扩展其自己的基类。
- 货币
use GGGGino\SkuskuCartBundle\Model\SkuskuCurrencyBase; class Currency extends SkuskuCurrencyBase { }
Twig 函数
打印购物车预览
{{ render_preview_cart() }}
打印语言选择块
{{ render_lang_cart() }}
打印货币选择块
{{ render_currency_cart() }}
购物车管理器 API
购物车管理器
获取购物车管理器实例
use GGGGino\SkuskuCartBundle\Service\CartManager; . . . $cartManager = $this->get(CartManager::class);
CartManager::persistCart(SkuskuCart $cart)
将购物车添加到EntityManager
use GGGGino\SkuskuCartBundle\Model\SkuskuCart; . . . /** @var SkuskuCart $finalCart */ $finalCart = ... $cartManager->persistCart($finalCart);
CartManager::flushCart(SkuskuCart $cart);
刷新购物车
$cartManager->flushCart($finalCart);
CartManager::addProductToCart(SkuskuProductInterface $product, int $quantity)
将某些产品添加到购物车
$quantity = 20; $cartManager->addProductToCart($product, $quantity);
CartManager::createNewCart(SkuskuCustomerInterface $customer = null)
从给定的客户创建新的购物车,如果未传递客户,则从会话中获取
$cartManager->createNewCart($customer);
CartManager::createNewOrderFromCart(SkuskuCart $cart)
从给定的购物车构建新的订单。例如,当支付成功时使用
$cartManager->createNewOrderFromCart($cart);
购物车页面
/cart
命令
bin/console ggggino_skusku:cart:clear
清除所有 skuskutables
bin/console ggggino_skusku:currency:create
创建给定实体的行 - 开发
bin/console ggggino_skusku:doctor:db
检查安装程序是否成功
配置细节
您可以选择是否允许匿名用户购物
# config.yml ggggino_skuskucart: allow_anonymous_shop: false
在默认步骤和创建新步骤之间进行选择,记住对于 "cart|chosePayment|payment" 您只能覆盖配置
# config.yml ggggino_skuskucart: stepform: cart: form_type: GGGGino\SkuskuCartBundle\Form\CartFlowType\CartStep1FormType label: Step 1 chosePayment: form_type: GGGGino\SkuskuCartBundle\Form\CartFlowType\CartStep2FormType label: Step 2 payment: form_type: GGGGino\SkuskuCartBundle\Form\CartFlowType\CartStep3FormType label: Step 3
如果您需要在表单步骤中进行更多自定义,则可以覆盖它。您的 CartFlow 只需继承
# config.yml ggggino_skuskucart: stepform_class: GGGGino\SkuskuCartBundle\Form\CartFlow
如果您需要更改模板
# config.yml ggggino_skuskucart: templates: cart_layout: 'GGGGinoSkuskuCartBundle::cart_page.html.twig' done_layout: 'xxxBundle:xxx:xxx.html.twig'
事件
模板
待办事项
- 创建购物车的API
- 订购步骤表单项