小编Rad*_*nes的帖子

如何扩展 Shopware 6 控制器操作

我正在为 Shopware 6 构建一个插件,但似乎找不到任何关于如何扩展现有控制器操作的文档。我在 Shopware 中找到了如何向帐户控制器添加操作,但它似乎指的是 Shopware 5,我不确定我是否可以在 Shopware 6 中以这种方式使用它。

我想扩展的控制器操作是\Shopware\Storefront\Controller\AddressController::saveAddress- 在我的情况下,我想添加自定义地址验证,该验证将在我的插件中使用一项服务,其中将向第 3 方 API 发出请求,如果地址正确,则允许该地址,如果不正确然后返回一个错误。也许最好改为扩展,\Shopware\Core\Checkout\Customer\SalesChannel\AddressService::save但我现在不知道(一般来说我是 Shopware 的新手)。扩展服务意味着我不必覆盖整个操作逻辑,以便它在中间包含我的检查。或者也许有一个我可以用来保存地址的事件(同样的事情,找不到 Shopware6 的良好来源/事件列表)。

这里似乎有指南:https : //docs.shopware.com/en/shopware-platform-dev-en/developer-guide/controller 和这里:https : //docs.shopware.com/en/shopware-platform -dev-en/how-to/custom-storefront-controller 但这些只描述了如何制作一个新的控制器,它对我来说不是很有用,因为我不想添加任何新的路由而是使用现有的/account/address/create

我将非常感谢如何在插件(配置,xml)中注册覆盖以及扩展类的代码示例。如果不是问太多,理想的答案将包含以下示例:

  1. 如何扩展现有控制器的操作。
  2. 如何扩展现有服务。
  3. 在哪里可以找到在控制器/服务中触发的事件,订阅它并使其覆盖默认行为(如 throw Shopware\Core\Framework\Validation\Exception\ConstraintViolationException)。

php plugins controller shopware shopware6

5
推荐指数
1
解决办法
1970
查看次数

统计子聚合返回的桶数

我需要计算管道聚合返回的结果集中的桶数。问题是我的查询在这里使用脚本选择器

POST visitor_carts/_search
{
  "size": 0,
  "aggs": {
    "visitors": {
      "terms": {"field" : "visitor_id"},
      "aggs": {
        "one_purchase": {
          "bucket_selector": {
            "buckets_path": {
              "nb_purchases": "_count"
            },
            "script": "params.nb_purchases == 3"
          }
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

返回类似的内容:

{
  "took" : 0,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 5,
    "max_score" : 0.0,
    "hits" : [ ]
  },
  "aggregations" : {
    "visitors" …
Run Code Online (Sandbox Code Playgroud)

elasticsearch

2
推荐指数
1
解决办法
2412
查看次数

通过 Shopware 6 API 添加图片

我有一个 Shopware 6.3 商店,需要使用集成 API 将图像迁移到它。

我应该如何为媒体上传构建一个主体?我需要将文件放在某处还是只传递链接?

我设法通过这里的指南将新产品推入 Shopware:https ://docs.shopware.com/en/shopware-platform-dev-en/admin-api-guide/writing-entities?category = shopware-platform-dev -en/admin-api-guide#creating-entities但我不确定如何处理媒体。在本指南中,仅解释了如何在已上传的媒体文件与此处的产品之间创建链接https://docs.shopware.com/en/shopware-platform-dev-en/admin-api-guide/writing-entities? category=shopware-platform-dev-en/admin-api-guide#media-handling但没有关于如何实际推送媒体文件的示例。

我有我需要的每个图像的 URL(在数据库中,以及产品 ID 和图像位置)。

实体模式将媒体描述为:

    "media": {
        "name": "media",
        "translatable": [
            "alt",
            "title",
            "customFields"
        ],
        "properties": {
            "id": {
                "type": "string",
                "format": "uuid"
            },
            "userId": {
                "type": "string",
                "format": "uuid"
            },
            "mediaFolderId": {
                "type": "string",
                "format": "uuid"
            },
            "mimeType": {
                "type": "string",
                "readOnly": true
            },
            "fileExtension": {
                "type": "string",
                "readOnly": true
            },
            "uploadedAt": {
                "type": "string",
                "format": "date-time",
                "readOnly": true
            },
            "fileName": …
Run Code Online (Sandbox Code Playgroud)

media api image shopware shopware6

1
推荐指数
2
解决办法
2359
查看次数

标签 统计

shopware ×2

shopware6 ×2

api ×1

controller ×1

elasticsearch ×1

image ×1

media ×1

php ×1

plugins ×1