webgriffe/sylius-elasticsearch-plugin

允许在Sylius中搜索产品的插件。


README

Sylius Elasticsearch 插件

Sylius的Elasticsearch查询引擎插件。

安装

  1. 运行

    composer require webgriffe/sylius-elasticsearch-plugin
  2. 将以下内容添加到您的 config/bundles.php 文件中: Webgriffe\SyliusElasticsearchPlugin\WebgriffeSyliusElasticsearchPlugin::class => ['all' => true]

    通常,该插件会通过 composer require 命令自动添加到 config/bundles.php 文件中。如果没有,您需要手动添加。

  3. 导入插件配置。将以下内容添加到您的 config/packages/webgriffe_sylius_elasticsearch_plugin.yaml 文件中

    imports:
        - { resource: "@WebgriffeSyliusElasticsearchPlugin/config/config.php" }
  4. 导入取消支付所需的路由。将以下内容添加到您的 config/routes.yaml 文件中

    webgriffe_sylius_elasticsearch_plugin:
        resource: "@WebgriffeSyliusElasticsearchPlugin/config/shop_routing.php"

    注意:如果您启用了地区前缀,请在导入时加上该前缀。

  5. 使您的 ProductRepository 实现 DocumentTypeRepositoryInterface。请记住更新您的产品资源配置以使用新的存储库。例如

    sylius_product:
        resources:
            product:
                classes:
                    repository: App\Doctrine\ORM\ProductRepository
  6. 使您的 ProductAttribute 和 ProductOption 实体实现 FilterableInterface。您可以通过使用我们提供的 DoctrineORMFilterableTrait 来实现它。例如

    use Webgriffe\SyliusElasticsearchPlugin\Doctrine\ORM\FilterableTrait;use Webgriffe\SyliusElasticsearchPlugin\Model\FilterableInterface;
    
    class ProductAttribute implements FilterableInterface
    {
        use FilterableTrait;
    }

用法

贡献

有关Sylius插件开发的全面指南,请访问Sylius文档,在那里您可以找到插件开发指南,其中包含大量示例。

快速安装

传统

  1. 运行 composer create-project sylius/plugin-skeleton ProjectName

  2. 从插件骨架根目录运行以下命令

    $ (cd tests/Application && yarn install)
    $ (cd tests/Application && yarn build)
    $ (cd tests/Application && APP_ENV=test bin/console assets:install public)
    
    $ (cd tests/Application && APP_ENV=test bin/console doctrine:database:create)
    $ (cd tests/Application && APP_ENV=test bin/console doctrine:schema:create)

要设置插件数据库,请确保在 tests/Application/.envtests/Application/.env.test 中配置您的数据库凭据。

Docker

  1. 执行 docker compose up -d

  2. 初始化插件 docker compose exec app make init

  3. 在浏览器中打开 open localhost

用法

运行插件测试

  • PHPUnit

    vendor/bin/phpunit
  • PHPSpec

    vendor/bin/phpspec run
  • Behat(非JS场景)

    vendor/bin/behat --strict --tags="~@javascript"
  • Behat(JS场景)

    1. 安装Symfony CLI命令.

    2. 启动无头Chrome

    google-chrome-stable --enable-automation --disable-background-networking --no-default-browser-check --no-first-run --disable-popup-blocking --disable-default-apps --allow-insecure-localhost --disable-translate --disable-extensions --no-sandbox --enable-features=Metal --headless --remote-debugging-port=9222 --window-size=2880,1800 --proxy-server='direct://' --proxy-bypass-list='*' http://127.0.0.1
    1. 安装SSL证书(只需安装一次)并在 127.0.0.1:8080 上运行测试应用程序的web服务器
    symfony server:ca:install
    APP_ENV=test symfony server:start --port=8080 --dir=tests/Application/public --daemon
    1. 运行Behat
    vendor/bin/behat --strict --tags="@javascript"
  • 静态分析

    • Psalm

      vendor/bin/psalm
    • PHPStan

      vendor/bin/phpstan analyse -c phpstan.neon -l max src/  
  • 编码标准

    vendor/bin/ecs check

使用您的插件打开Sylius

  • 使用 test 环境

    (cd tests/Application && APP_ENV=test bin/console sylius:fixtures:load)
    (cd tests/Application && APP_ENV=test bin/console server:run -d public)
  • 使用 dev 环境

    (cd tests/Application && APP_ENV=dev bin/console sylius:fixtures:load)
    (cd tests/Application && APP_ENV=dev bin/console server:run -d public)