webburza / sylius-wishlist-bundle
Requires
- php: ^7.1
- sylius/sylius: ~1.1.0
Requires (Dev)
- behat/behat: ^3.3
- behat/mink: ^1.7
- behat/mink-browserkit-driver: ^1.3
- behat/mink-extension: ^2.2
- behat/mink-selenium2-driver: ^1.3
- friends-of-behat/context-service-extension: ^1.0
- friends-of-behat/cross-container-extension: ^1.0
- friends-of-behat/service-container-extension: ^1.0
- friends-of-behat/symfony-extension: ^1.0
- friends-of-behat/variadic-extension: ^1.0
- lakion/mink-debug-extension: ^1.2.3
- phpspec/phpspec: ^3.2
- phpstan/phpstan-shim: ^0.9.2
- phpunit/phpunit: ^6.5
- se/selenium-server-standalone: ^2.52
- sylius-labs/coding-standard: ^1.0
- symplify/easy-coding-standard: ^2.4
This package is not auto-updated.
Last update: 2022-02-01 12:58:48 UTC
README
此包为Sylius电子商务平台添加愿望功能。它可以根据配置使用单个或多个愿望单,可以是公开的或私有的。
安装
- 使用Composer要求包
$ composer require webburza/sylius-wishlist-plugin
- 在
app/AppKernel.php
中启用包
public function registerBundles() { $bundles = [ // ... new \Webburza\SyliusWishlistPlugin\WebburzaSyliusWishlistPlugin(), // ... ]; }
- 在
app/config/config.yml
顶部添加配置
imports: - { resource: "@WebburzaSyliusWishlistPlugin/Resources/config/config.yml" }
其中还包括可以随后在应用程序的config.yml中覆盖的配置条目。
webburza_sylius_wishlist:
multiple: true # multiple wishlist mode
default_public: false # used for automatically created wishlists
- 在
app/config/routing.yml
中注册路由
webburza_sylius_wishlist: resource: "@WebburzaSyliusWishlistPlugin/Resources/config/routing.yml"
- 该包现在已完全集成,但仍需要创建数据库表。为此,我们建议使用迁移。
$ bin/console doctrine:migrations:diff $ bin/console doctrine:migrations:migrate
或者,如果您不使用迁移,可以直接更新数据库模式。
$ bin/console doctrine:schema:update
- 如果您将此包集成到现有项目中,您的现有用户将不会有任何关联的愿望单。这不是问题,因为需要时愿望单会自动创建。
商店页面集成
现在您已安装并集成了此包,用户可以查看他们的愿望单、创建新的愿望单等,具体取决于包配置,但他们仍然没有方法将产品添加到愿望单中。由于每个项目都将有定制的商品页面,此实现由您自己决定。有两种方法可以实现。
- 简单
由于“添加到愿望单”功能几乎与添加到购物车相同,因此最终集成的最简单方法是向现有表单中的“添加到购物车”按钮旁边添加一个新的“添加到愿望单”按钮。
打开包含您的“添加到购物车”表单的模板,最可能在: app/Resources/SyliusShopBundle/views/Product/Show/_addToCart.html.twig
找到默认的“添加到购物车”按钮
<button type="submit" class="ui huge primary icon labeled button"><i class="cart icon"></i> {{ 'sylius.ui.add_to_cart'|trans }}</button>
并在其下方添加以下行。
{% include '@WebburzaSyliusWishlistPlugin/Shop/Misc/_addToWishlist.html.twig' %}
这将包括“添加到愿望单”按钮以及所有必需的功能。它还将包含下拉菜单,如果用户有多个愿望单,则允许用户选择要将项目添加到哪个愿望单中。
下拉菜单仅会在用户有多个愿望单时渲染。
- 自定义AJAX实现
另一种选择是实现您自己的完全定制的“添加到愿望单”功能。为此,向 webburza_wishlist_frontend_add_item
路由提交数据。
$.ajax({
url: '/wishlist/item',
type: 'POST',
data: {
productVariantId: 123,
wishlistId: 456 // optional
},
success: // ...
});
您还可以以与第一个示例相同的方式提交数据(“添加到购物车”表单),两个示例都使用相同的路由,并且都接受要解析的变体数据(第一个示例)或已解析的产品变体ID。
愿望单徽章
您可能还想在页眉中添加一个徽章,该徽章链接到愿望单并显示当前已添加的项目数量,类似于现有的购物车徽章。
为此,只需将此行添加到同一文件 app/Resources/SyliusShopBundle/views/Cart/_widget.html.twig
的底部。
{% include '@WebburzaSyliusWishlistPlugin/Shop/Misc/_badge.html.twig' %}
翻译和命名
该插件支持多语言,并且可以通过在 app/Resources/WebburzaSyliusWishlistPlugin/translations
目录中创建翻译文件,覆盖任何其他插件的本地化文件。
要开始,请检查插件的默认语言文件,位置如下:src/Resources/translations/messages.en.yml
手动运行和测试应用程序
-
初始安装和数据固定
$ composer install $ (cd tests/Application && yarn install) $ (cd tests/Application && yarn run gulp) $ (cd tests/Application && bin/console assets:install web -e dev) $ (cd tests/Application && bin/console doctrine:database:create -e dev) $ (cd tests/Application && bin/console doctrine:schema:create -e dev) $ (cd tests/Application && bin/console sylius:fixtures:load -e dev)
-
启动应用程序
$ (cd tests/Application && bin/console server:start -d web -e dev)
-
停止应用程序
$ (cd tests/Application && bin/console server:stop)
自动化测试
-
Behat(非JavaScript场景)
$ bin/behat --tags="~@javascript"
-
Behat(带有JavaScript场景)
-
下载 Chromedriver
-
使用之前下载的Chromedriver运行Selenium服务器
$ bin/selenium-server-standalone -Dwebdriver.chrome.driver=/path/to/chromedriver
-
在
localhost:8080
上运行测试应用程序的web服务器$ (cd tests/Application && bin/console server:run 127.0.0.1:8080 -d web -e test)
-
运行Behat
$ bin/behat
-
许可
此插件可在MIT许可下使用。