亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何擴展 Shopware 6 控制器操作

如何擴展 Shopware 6 控制器操作

PHP
墨色風雨 2023-09-15 17:45:51
我正在為 Shopware 6 構建一個插件,但似乎找不到任何有關如何擴展現有控制器操作的文檔。我發現這個How to add an Action to Account Controller in 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。我將非常感謝您提供有關如何在插件(config、xml)中注冊覆蓋以及擴展類的外觀的代碼示例。如果要求不是太多,理想的答案將包含以下示例:如何擴展現有控制器的操作。如何擴展現有服務。在哪里找到控制器/服務中正在觸發的事件,訂閱它并使其覆蓋默認行為(例如 throw Shopware\Core\Framework\Validation\Exception\ConstraintViolationException)。
查看完整描述

1 回答

?
拉莫斯之舞

TA貢獻1820條經驗 獲得超10個贊

  1. 擴展/覆蓋操作是沒有意義的,因為操作應該盡可能精簡,并且所有業務邏輯都應該處于服務狀態。

  2. 要擴展現有服務,您可以對其進行裝飾或訂閱某些事件以擴展功能。請參閱https://docs.shopware.com/en/shopware-platform-dev-en/how-to/decorating-a-service

  3. 在您的情況下,您可以訂閱framework.validation.address.create或/和framework.validation.address.update事件來擴展約束列表。一般來說,所有驗證事件都有前綴framework.validation.第二部分是\Shopware\Core\Framework\Validation\DataValidationFactoryInterface在您的情況下在實現中定義的\Shopware\Core\Checkout\Customer\Validation\AddressValidationFactory


查看完整回答
反對 回復 2023-09-15
  • 1 回答
  • 0 關注
  • 123 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號