วิธีแก้ไขปัญหา Custom checkbox ติดอยู่ตลอดเมื่อสร้าง DocType ใหม่ใน Frappe 16 แม้เปิด Developer Mode แล้ว - ต้องใช้ bench set-config แทนการแก้ไข JSON

เผยแพร่
เวลาอ่าน
เมื่อสร้าง DocType ใหม่ใน Frappe 16 แล้วพบว่า checkbox "Custom?" ติดเลือกอยู่ตลอดและไม่สามารถยกเลิกได้ แม้จะเปิด Developer Mode แล้วก็ตาม บทความนี้จะอธิบายสาเหตุและวิธีแก้ไขที่ถูกต้อง
เมื่อคลิก "Create New DocType" ใน Frappe 16 จะพบว่า checkbox "Custom?" ถูกเลือกไว้และไม่สามารถยกเลิกได้ (read-only) แม้ว่าจะตั้งค่า developer_mode: 1 ใน site_config.json แล้วก็ตาม

{
"db_name": "_139d3e8086da46e7",
"developer_mode": 1,
"maintenance_mode": 0
}แม้จะตั้งค่า developer_mode: 1 แล้ว แต่ปัญหายังคงอยู่
ใน Frappe 16 มีการตรวจสอบ 2 เงื่อนไขก่อนอนุญาตให้สร้าง Standard DocType (non-custom):
// จาก frappe/core/doctype/doctype/doctype_list.js
let non_developer =
frappe.session.user !== "Administrator" || !frappe.boot.developer_mode;เงื่อนไขคือ:
frappe.boot.developer_mode ต้องเป็น trueเมื่อแก้ไข site_config.json โดยตรง (manual edit) ค่า config จะถูก cache ไว้ใน Redis และไม่ถูก update ทำให้ frappe.boot.developer_mode ยังคงเป็น 0 หรือ undefined
# ตั้งค่า developer_mode ผ่าน CLI
bench set-config -g developer_mode 1คำสั่งนี้จะ:
site_config.jsonfrappe.boot.developer_mode ถูกตั้งค่าอย่างถูกต้องหากแก้ไข JSON โดยตรงไปแล้ว ให้ clear cache:
bench --site [sitename] clear-cachebench --site [sitename] console>>> frappe.conf.developer_mode
1bench set-config เสมอdeveloper_mode: 0 ใน common config อาจ override site config ได้cat ~/frappe-bench/sites/common_site_config.json | grep developerถ้าพบ "developer_mode": 0 ให้แก้ไขด้วย:
bench set-config -g developer_mode 1บทความนี้ได้แสดงวิธีแก้ปัญหา "Custom?" checkbox ที่ติดอยู่ตลอดใน Frappe 16:
site_config.json โดยตรงไม่ได้ clear cache ทำให้ frappe.boot.developer_mode ไม่ถูก updatebench set-config -g developer_mode 1 แทนการแก้ไข JSONfrappe/core/doctype/doctype/doctype_list.js