xforge · tài liệu FE

FE: module product_category — danh mục sản phẩm (cây) #

Phần chung (khởi tạo client, lỗi, danh sách, ngôn ngữ) ở tài liệu FE của Core: docs/fe/common.md (bản đọc: xforge-documentation, ADR-0102 của xforge-core). Sửa file này CÙNG PR khi đổi hành vi FE thấy được của module.

Danh mục là CÂY tối đa 8 cấp: mỗi dòng có parentId (null = gốc), path, depth, sortOrder. Server trả danh sách PHẲNG — FE tự dựng cây từ parentId. Field dịch được (name, slug…): phần chung §3.3. Ảnh: imageFileId + imageFileInfo (module files).

Dựng cây #

sort=tree (mặc định) trả cha trước con, anh em theo sortOrder rồi mã — đọc lần lượt và gắn vào parentId là ra cây đúng thứ tự. Lọc: parent_id (con trực tiếp), parent_id.null=true (chỉ gốc), depth / depth.lte (giới hạn tầng), active.

CMS / admin (XforgeClient) #

Menu: key product_category.categories (quyền product_category.read).

ViệcMethodQuyền
Danh sách / câylistProductCategories({ query })product_category.read
Picker câylistProductCategoryOptions({ query }) — trang tới 1000 dòng, thường cả cây một lầnproduct_category.read
Chi tiếtgetProductCategory({ params: { id } })product_category.read
TạocreateProductCategory({ body }) (parentId vắng = gốc)product_category.create
Sửa / chuyển nhánhupdateProductCategory({ params: { id }, body })product_category.update
XoádeleteProductCategory({ params: { id } })product_category.delete

Storefront (StorefrontClient) #

Không cần đăng nhập. Chỉ danh mục đang bật, có bản dịch, VÀ mọi tổ tiên đều đang bật (cha tắt → cả nhánh ẩn).

Lỗi cần xử lý #

codeStatusFE nên
product_category_not_found404trang 404 (storefront: slug không còn / bị ẩn)
product_category_code_exists409báo ở ô code
product_category_slug_exists409báo ở ô slug của đúng ngôn ngữ
product_category_parent_not_found400cha không thuộc store / đã xoá → tải lại picker
product_category_too_deep409quá 8 cấp → chọn cha nông hơn
product_category_cycle409chọn cha là chính nó / con cháu
product_category_has_children409chuyển / xoá các danh mục con trước
unsupported_language400ngôn ngữ không bật cho store
file_not_attachable400ảnh không phải file của store này

Màn hình dựng sẵn #

listMenu() → mục product_category.categories có screen (type: "crud"): CMS chung vẽ được từ getMenuScreen({ params: { key: "product_category.categories" } }) mà không cần code riêng (tài liệu FE của Core: cms.md §3.1). Có: danh sách (ảnh, mã, tên, danh mục cha, thứ tự, đang dùng; tìm; lọc theo trạng thái / danh mục cha), form tạo / sửa (bản dịch, danh mục cha chọn từ listProductCategoryOptions, ảnh tải qua uploadFile), xoá.

Màn hình chung KHÔNG có (CMS tự thêm nếu cần): hiển thị dạng CÂY (danh sách phẳng; sắp tree của listProductCategories vẫn dùng được nếu CMS tự vẽ cây), chặn chọn chính nó / con cháu làm cha (server trả lỗi).

Quyền ngoài module mà màn hình dùng (thiếu thì CMS ẩn / rơi về ô nhập thường):

Gửi translations khi sửa là THAY cả bộ bản dịch (ngôn ngữ vắng bị xoá).

Nguồn: xforge-modules: modules/catalog/product_category/FE.md