madcoders / setono-sylius-terms-plugin
Sylius服务条款插件
Requires
- php: ^7.4 || ^8.0
- doctrine/collections: ^1.6
- doctrine/orm: ^2.7
- sylius/sylius: ~1.10.0 || ~1.9.0
- thecodingmachine/safe: ^1.1
Requires (Dev)
- behat/behat: ^3.6.1
- behat/mink-selenium2-driver: ^1.4
- dmore/behat-chrome-extension: ^1.3
- dmore/chrome-mink-driver: ^2.7
- friends-of-behat/mink: ^1.8
- friends-of-behat/mink-browserkit-driver: ^1.4
- friends-of-behat/mink-debug-extension: ^2.0.0
- friends-of-behat/mink-extension: ^2.4
- friends-of-behat/page-object-extension: ^0.3
- friends-of-behat/suite-settings-extension: ^1.0
- friends-of-behat/symfony-extension: ^2.1
- friends-of-behat/variadic-extension: ^1.3
- friendsofsymfony/oauth-server-bundle: ^1.6 || >2.0.0-alpha.0 ^2.0@dev
- phpspec/phpspec: ^7.0
- phpstan/extension-installer: ^1.0
- phpstan/phpstan: 0.12.85
- phpstan/phpstan-doctrine: 0.12.33
- phpstan/phpstan-strict-rules: ^0.12.0
- phpstan/phpstan-webmozart-assert: 0.12.12
- phpunit/phpunit: ^9.5
- psalm/plugin-phpunit: ^0.16.1
- psalm/plugin-symfony: ^2.4
- roave/security-advisories: dev-latest
- sensiolabs/security-checker: ^6.0
- setono/code-quality-pack: ^2.1.1
- sylius-labs/coding-standard: ^4.0
- symfony/browser-kit: ^4.4 || ^5.2
- symfony/debug-bundle: ^4.4 || ^5.2
- symfony/dotenv: ^4.4 || ^5.2
- symfony/intl: ^4.4 || ^5.2
- symfony/web-profiler-bundle: ^4.4 || ^5.2
- dev-master / 1.1.x-dev
- 1.1.0
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- dev-feature/extended_tos_pr
- dev-feature/extended_tos_item
- dev-madcoders/Adapting_the_environment_to_development
- dev-feature/display_settings
- dev-dependabot/github_actions/shivammathur/setup-php-2.15.0
- dev-dependabot/composer/psalm/plugin-symfony-tw-2.4or-tw-3.0
- dev-dependabot/composer/phpunit/phpunit-tw-9.4
- dev-dependabot/composer/phpspec/phpspec-tw-7.0
This package is auto-updated.
Last update: 2024-09-08 21:37:23 UTC
README
这是对Setono/SyliusTermsPlugin的分支
扩展功能
- 可以启用/禁用每个条目
- 可以决定在哪里显示条款:结账页面、客户注册表单、页脚(作为链接)
- 位置字段以对条款进行排序(如果同一区域使用多个条款)
- 升级开发环境到Sylius 1.10
与原始README相比,有2个额外的安装步骤
步骤7:覆盖客户注册表单
覆盖Sylius表单
-
如果您还没有自己的
templates/bundles/SyliusShopBundle/Register/_form.html.twig
$ cp vendor/sylius/sylius/src/Sylius/Bundle/ShopBundle/Resources/views/Register/_form.html.twig \ templates/bundles/SyliusShopBundle/Register/_form.html.twig
-
如果您已经有了它
添加条款字段(正好这种方式)
{# templates/bundles/SyliusShopBundle/Register/_form.html.twig#} {% if form.terms is defined %} {% form_theme form.terms '@SetonoSyliusTermsPlugin/Shop/Form/termsTheme.html.twig' %} {{ form_row(form.terms) }} {% endif %}
所以最终模板将看起来像这样
{# templates/bundles/SyliusShopBundle/Register/_form.html.twig#} <h4 class="ui dividing header">{{ 'sylius.ui.personal_information'|trans }}</h4> <div class="two fields"> {{ form_row(form.firstName, sylius_test_form_attribute('first-name')) }} {{ form_row(form.lastName, sylius_test_form_attribute('last-name')) }} </div> {{ form_row(form.email, sylius_test_form_attribute('email')) }} {{ form_row(form.phoneNumber, sylius_test_form_attribute('phone-number')) }} {{ form_row(form.subscribedToNewsletter, sylius_test_form_attribute('subscribed-to-newsletter')) }} <h4 class="ui dividing header">{{ 'sylius.ui.account_credentials'|trans }}</h4> {{ form_row(form.user.plainPassword.first, sylius_test_form_attribute('password-first')) }} {{ form_row(form.user.plainPassword.second, sylius_test_form_attribute('password-second')) }} {% if form.terms is defined %} {% form_theme form.terms '@SetonoSyliusTermsPlugin/Shop/Form/termsTheme.html.twig' %} {{ form_row(form.terms) }} {% endif %}
步骤8:覆盖页脚块
-
如果您还没有自己的
templates/bundles/SyliusShopBundle/Layout/Footer/Grid/_your_store.html.twig
$ cp vendor/sylius/sylius/src/Sylius/Bundle/ShopBundle/Resources/views/Layout/Footer/Grid/_your_store.html.twig \ templates/bundles/SyliusShopBundle/Layout/Footer/Grid/_your_store.html.twig
-
如果您已经有了它
添加条款字段(正好这种方式)
{# templates/bundles/SyliusShopBundle/Layout/Footer/Grid/_your_store.html.twig #} {% set terms = footer_terms_view() %} {% if terms is defined and terms is not null %} {% for term in terms %} {{ footer_term_link(term, sylius.localeCode) }} {% endfor %} {% endif %}
所以最终模板将看起来像这样
{# templates/bundles/SyliusShopBundle/Layout/Footer/Grid/_your_store.html.twig #} <div class="four wide column"> <h4 class="ui inverted header">{{ 'sylius.ui.your_store'|trans }}</h4> <div class="ui inverted link list"> <a href="#" class="item">{{ 'sylius.ui.about'|trans }}</a> {% set terms = footer_terms_view() %} {% if terms is defined and terms is not null %} {% for term in terms %} {{ footer_term_link(term, sylius.localeCode) }} {% endfor %} {% endif %} <a href="{{ path('sylius_shop_contact_request') }}" class="item">{{ 'sylius.ui.contact_us'|trans }}</a> </div> </div>
有一个开放的pull request,它详细总结了更改:Setono#48
------- 原始插件的README从这里开始 --------
将在客户结账时添加检查条款和条件的必填要求
屏幕截图
商店
在客户可以下订单之前,他/她必须检查所需的条款
管理员
这里是一份条款列表。注意terms_and_conditions
与多个渠道相关联。
说明
字段是在完整订单页面上显示的文本。注意您可以使用占位符([链接:链接文本]
)来指示链接的位置。
安装
步骤1:下载插件
打开命令行,进入您的项目目录,并执行以下命令以下载此插件的最新稳定版本
$ composer require setono/sylius-terms-plugin
此命令要求您全局安装Composer,如Composer文档的安装章节中所述。
步骤2:启用插件
然后,通过将其添加到项目config/bundles.php
文件中注册的插件/捆绑包列表来启用插件
<?php # config/bundles.php return [ // ... Setono\SyliusTermsPlugin\SetonoSyliusTermsPlugin::class => ['all' => true], // It is important to add plugin before the grid bundle Sylius\Bundle\GridBundle\SyliusGridBundle::class => ['all' => true], // ... ];
注意您必须在网格捆绑包之前实例化插件,否则您将看到如您请求的参数“setono_sylius_terms.model.terms.class”不存在。
这样的异常。
步骤3:导入配置
# config/packages/_sylius.yaml imports: # ... - { resource: "@SetonoSyliusTermsPlugin/Resources/config/app/config.yaml" } # ...
步骤4:导入路由
# config/routes/setono_sylius_terms.yaml setono_sylius_terms_shop: resource: "@SetonoSyliusTermsPlugin/Resources/config/shop_routing.yaml" prefix: /{_locale} requirements: _locale: ^[a-z]{2}(?:_[A-Z]{2})?$ setono_sylius_terms_admin: resource: "@SetonoSyliusTermsPlugin/Resources/config/admin_routing.yaml" prefix: /admin
步骤5:更新您的数据库模式
$ php bin/console doctrine:migrations:diff $ php bin/console doctrine:migrations:migrate
步骤6:覆盖结账完成表单
覆盖Sylius表单
-
如果您还没有自己的
templates/bundles/SyliusShopBundle/Checkout/Complete/_form.html.twig
$ cp vendor/sylius/sylius/src/Sylius/Bundle/ShopBundle/Resources/views/Checkout/Complete/_form.html.twig \ templates/bundles/SyliusShopBundle/Checkout/Complete/_form.html.twig
-
如果您已经有了它
添加条款字段(正好这种方式)
{# templates/bundles/SyliusShopBundle/Checkout/Complete/_form.html.twig #} {% if form.terms is defined %} {% form_theme form.terms '@SetonoSyliusTermsPlugin/Shop/Form/termsTheme.html.twig' %} {{ form_row(form.terms) }} {% endif %}
所以最终模板将看起来像这样
{# templates/bundles/SyliusShopBundle/Checkout/Complete/_form.html.twig #} {{ form_row(form.notes, {'attr': {'rows': 3}}) }} {% if form.terms is defined %} {% form_theme form.terms '@SetonoSyliusTermsPlugin/Shop/Form/termsTheme.html.twig' %} {{ form_row(form.terms) }} {% endif %}
故障排除
-
如果您看到
在类“Symfony\Component\Form\FormView”中既不存在属性“terms”,也不存在方法“terms()”、“getterms()”/“isterms()”或“hasterms()”或“__call()”,并且具有公共访问权限。
请参阅Setono#13并再次检查您是否像在
覆盖结账完成表单
部分中描述的那样在模板中添加了条款字段。 -
如果您看到
网格“setono_sylius_terms_terms”不存在
那么您忘记在
步骤3:导入配置
部分中导入配置。 -
如果在您的js控制台中看到
Uncaught ReferenceError: $ is not defined
这意味着
jQuery
被加载在了插件javascript代码之后。插件的javascript代码是通过sylius.shop.layout.javascripts
Sonata块注入到主模板中的。因此,请检查您的自定义templates/bundles/SyliusShopBundle/layout.html.twig
中的javascript
块,它应该像这样{# layout.html.twig #} {% block javascripts %} // We expect jquery to be loaded here {% include '@SyliusUi/_javascripts.html.twig' with {'path': 'assets/shop/js/app.js'} %} // But if you have it as separate script - just make sure // it placed before `sylius.shop.layout.javascripts` sonata block {{ sonata_block_render_event('sylius.shop.layout.javascripts') }} {% endblock %}