monsieurbiz/sylius-search-plugin

一个用于Sylius的基于Elasticsearch的搜索插件。

安装次数: 105,384

依赖者: 0

建议者: 0

安全性: 0

星标: 45

关注者: 9

分支: 38

开放问题: 13

类型:sylius-plugin


README

Banner of Sylius Search plugin

搜索

Search Plugin license Tests Status Recipe Status Security Status

一个使用Elastically和Jane的Sylius搜索插件。

兼容性

安装

如果您想使用我们的配方,可以通过运行以下命令来配置您的composer.json:

composer config --no-plugins --json extra.symfony.endpoint '["https://api.github.com/repos/monsieurbiz/symfony-recipes/contents/index.json?ref=flex/master","flex://defaults"]'

这是使用jane-php/automapper的最后一个版本,它需要nikic/php-parser="^4.0"。下一个版本将使用jolicode/automapper,它与nikic/php-parser="^5.0"兼容。

composer require --no-progress --no-interaction nikic/php-parser="^4.0"
composer require monsieurbiz/sylius-search-plugin

如果您使用Symfony Flex,配方将自动执行一些操作。

对于不带flex的安装,请遵循以下附加步骤:

将您的config/bundles.php文件更改为添加以下行以声明插件:

<?php

return [
    //..
    MonsieurBiz\SyliusSearchPlugin\MonsieurBizSyliusSearchPlugin::class => ['all' => true],
    Jane\Bundle\AutoMapperBundle\JaneAutoMapperBundle::class => ['all' => true],
];

config/packages/monsieurbiz_sylius_search_plugin.yaml中创建配置文件

imports:
  - { resource: "@MonsieurBizSyliusSearchPlugin/Resources/config/config.yaml" }

config/routes/monsieurbiz_sylius_search_plugin.yaml中创建路由配置文件

monsieurbiz_search_plugin:
  resource: "@MonsieurBizSyliusSearchPlugin/Resources/config/routing.yaml"

复制覆盖模板

cp -Rv vendor/monsieurbiz/sylius-search-plugin/src/Resources/templates/* templates/

最后,通过在文件的末尾添加以下行来在您的.env文件中配置插件:

###> MonsieurBizSearchPlugin ###
MONSIEURBIZ_SEARCHPLUGIN_MESSENGER_TRANSPORT_DSN=doctrine://default
MONSIEURBIZ_SEARCHPLUGIN_ES_HOST=${ELASTICSEARCH_HOST:-localhost}
MONSIEURBIZ_SEARCHPLUGIN_ES_PORT=${ELASTICSEARCH_PORT:-9200}
MONSIEURBIZ_SEARCHPLUGIN_ES_URL=http://${MONSIEURBIZ_SEARCHPLUGIN_ES_HOST}:${MONSIEURBIZ_SEARCHPLUGIN_ES_PORT}/
###< MonsieurBizSearchPlugin ###

  1. 安装Elasticsearch 💪。请参阅以下部分的基础设施。

  2. 您的ProductAttributeProductOption实体需要实现MonsieurBiz\SyliusSearchPlugin\Entity\Product\SearchableInterface接口,并使用MonsieurBiz\SyliusSearchPlugin\Model\Product\SearchableTrait特性。以下是一个使用ProductAttribute的示例:

namespace App\Entity\Product;

use Doctrine\ORM\Mapping as ORM;
+use MonsieurBiz\SyliusSearchPlugin\Entity\Product\SearchableInterface;
+use MonsieurBiz\SyliusSearchPlugin\Model\Product\SearchableTrait;
use Sylius\Component\Attribute\Model\AttributeTranslationInterface;
use Sylius\Component\Product\Model\ProductAttribute as BaseProductAttribute;

/**
 * @ORM\Entity
 * @ORM\Table(name="sylius_product_attribute")
 */
#[ORM\Entity]
#[ORM\Table(name: 'sylius_product_attribute')]
-class ProductAttribute extends BaseProductAttribute
+class ProductAttribute extends BaseProductAttribute implements SearchableInterface
{
+    use SearchableTrait;

    protected function createTranslation(): AttributeTranslationInterface
    {
        return new ProductAttributeTranslation();
  1. 您需要运行doctrine迁移的diff: console doctrine:migrations:diff。不要忘记运行它!(console doctrine:migrations:migrate

  2. 运行填充命令。

文档

文档可在docs文件夹中找到。

基础设施

该插件是为Elasticsearch 7.16.x版本开发的。您需要安装analysis-icu和analysis-phonetic elasticsearch插件。

其他信息

Jane

我们使用Jane来创建DTO(数据传输对象)。
生成的类位于generated文件夹中。
Jane配置和JSON Schema位于src/Resources/config/jane文件夹中。

在插件开发期间重新构建生成的类,我们使用

symfony php vendor/bin/jane generate --config-file=src/Resources/config/jane/jane-configuration.php

Elastically

Elastically客户端配置在src/Resources/config/services.yaml文件中。
您可以在.env文件中自定义它,或者在config/services.yaml中。
分析器和YAML映射位于src/Resources/config/elasticsearch文件夹中。