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,也別忘了訂閱電子報,隨時掌握第一手消息喔!若有任何問題,歡迎隨時與我們聯繫。
我要留言