我正在为 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)中注册覆盖以及扩展类的代码示例。如果不是问太多,理想的答案将包含以下示例:
Shopware\Core\Framework\Validation\Exception\ConstraintViolationException)。我需要计算管道聚合返回的结果集中的桶数。问题是我的查询在这里使用脚本选择器:
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) 我有一个 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)