文章彙整

Category attribute無法存入表單為0值

Astral WebBy Astral Web 1 month agoNo Comments
首頁  /  網站技術與設計  /  後端開發  /  Category attribute無法存入表單為0值

因為專案需求的關係需要在admin的category的form上新增原本沒有的欄位,上網爬文後我使用category attribute的方式去新增,以下圖所示,是我用的方式。

而將這multi-select的選項換成我需要的選項Customer group。

最後成果就會像這樣

但當我在測試功能是否成功運作的時候,卻發現NOT LOGGED IN選了之後不會存進資料庫。

去確認module-catalog\Controller\Adminhtml\Category\Save.php中從form表傳來的資料是否正確,在資料經過$category->validate()確認到NOT LOGGED IN的值會在這裡被去除,原因有可能是因為NOT LOGGED IN在資料庫存的值為0,所以才會被去除。

這一段會直接以最一開始建立category attribute的backend_model所使用的檔案有關。

進 \magento\module-eav\Model\Entity\Attribute\Backend\ArrayBackend.php 測試後就會發現validate()中的array_filter()會將資料中的NOT LOGGED IN清除掉。

解決方法就是直接複製Magento\Eav\Model\Entity\Attribute\Backend\ArrayBackend這隻檔案放到自己開發的模組中再把array_filter部分拿掉

最後把新增attribute那支檔案將’backend’ => ‘Magento\Eav\Model\Entity\Attribute\Backend\ArrayBackend’ 換複製檔案的檔案路徑就可以了。

以上就是本篇的分享呦!大家都知道該如何做了嗎?喜歡歐斯瑞的讀者們,記得追蹤我們的Facebook粉絲團IG,也別忘了訂閱電子報,隨時掌握第一手消息喔!若有任何問題,歡迎隨時與我們聯繫

 000

歐斯瑞

歐斯瑞 - 一個對網路世界充滿熱情的團隊

歐斯瑞提供免費電商知識,並協助各大類型之企業 電商諮詢建置MagentoShopify 相關的電商專案。

立即聯繫我們

推薦文章

Categories:
  後端開發網站技術與設計

留下回應

你的電子郵件地址不會被公開.