Giao diện
Cài đặt và sử dụng
Kích hoạt plugin
Vào Settings → Plugin Manager, bật @digiforce-nc/plugin-field-attachment-url. Plugin phụ thuộc plugin-file-manager — đảm bảo plugin này cũng đang hoạt động.
Yêu cầu trước khi dùng
- Có ít nhất một storage được cấu hình dạng public trong plugin-file-manager (ví dụ: S3 bucket với public read, hoặc local storage với public URL).
- Đã có collection quản lý file (attachments) sử dụng storage đó.
Thêm field Attachment URL
- Mở Collection Manager → chọn collection cần thêm field.
- Thêm field mới → chọn interface Attachment URL.
- Đặt tên field (ví dụ:
contractFile). - Lưu — field sẽ hiển thị component chọn file trên form.
typescript
const attachmentField = {
name: 'contractFile',
type: 'string',
interface: 'attachmentURL',
uiSchema: {
type: 'string',
title: 'File hợp đồng',
'x-component': 'AttachmentUrl',
},
};Cấu hình public storage
Plugin tự động tìm các collection có public storage thông qua server action collections:listFileCollectionsWithPublicStorage. Để collection xuất hiện trong danh sách:
- Vào plugin-file-manager → Storage Management.
- Tạo hoặc chỉnh sửa storage, đảm bảo bật tùy chọn public access.
- Gán storage cho collection quản lý file.
Cách sử dụng trên giao diện
- Mở form bản ghi chứa field Attachment URL.
- Click vào field → danh sách file collection khả dụng sẽ hiển thị.
- Chọn file từ collection → URL được tự động điền.
- Preview file (hình ảnh hiển thị thumbnail, file khác hiển thị icon loại file).
- Lưu bản ghi — URL được lưu dưới dạng chuỗi trong database.
Gọi API lấy danh sách file collections
typescript
const response = await api.resource('collections').listFileCollectionsWithPublicStorage();
const collections = response.data.data;Response trả về danh sách collection kèm thông tin storage:
json
[
{
"name": "attachments",
"storage": {
"type": "s3",
"baseUrl": "https://cdn.example.com"
}
}
]Lưu ý
- Giá trị field là URL string — nếu file bị xóa khỏi storage, URL sẽ trở thành dead link.
- Chỉ hiển thị collection có public storage; collection với private storage không xuất hiện.
- Plugin không upload file — chỉ tham chiếu file đã có trong hệ thống file manager.