Cách triển khai các trình định dạng trường cho các thuộc tính thực thể


16

Tôi đã tạo một thực thể tùy chỉnh bằng cách sử dụng API thực thể có các thuộc tính nhất định được xác định hook_schema()và cũng được khai báo trong entityPropertyInfo()một lớp mở rộng EntityDefaultMetadataController.

Càng xa càng tốt.

Bây giờ tôi muốn người dùng có thể tùy chỉnh nếu và cách các thuộc tính này được hiển thị khi xem các thực thể để tôi triển khai hook_field_extra_fields () và khai báo chúng.

Sau đó, trong Trình điều khiển mở rộng của EntityAPIControllertôi, tôi đã thêm các thuộc tính vào mảng nội dung $ buildContent()như được nêu ở đây .

Nó thực sự hoạt động khá tốt và các thuộc tính được hiển thị và tôn trọng các cài đặt thứ tự và khả năng hiển thị trong "Quản lý hiển thị".

Tuy nhiên, tôi dường như không thể tìm ra cách thêm cài đặt trong Manage Display để tùy chỉnh định vị nhãn ( inline/above/hidden) và quan trọng hơn là cách chỉ định trình định dạng tùy chỉnh cho các thuộc tính này.

Bất kì manh mối nào?


1
Do tài sản thậm chí hỗ trợ định dạng? Vì "Nút" không có "Tiêu đề" trong "Quản lý hiển thị", nên phỏng đoán đầu tiên của tôi sẽ là không. +1 cho một câu hỏi hay mặc dù.
Letharion

Các thuộc tính thực thể không hỗ trợ các trình định dạng, không. Bạn sẽ cần phải tự thực hiện toàn bộ cơ chế đó
Clive

Tôi đã lo sợ rằng đó là trường hợp
Alex Weber

Câu trả lời:


7

Bạn có thể tạo một mô-đun cung cấp propertyloại trường "". Lưu trữ thuộc tính được định dạng như một thiết lập thể hiện và sau đó áp dụng một định dạng cho điều đó. Nó nên tương đối đơn giản. Mô-đun quan hệ có một mô-đun trường giả có thể giúp bạn tìm ra cách mã hóa này.


1
Các Entity Dòng Sở hữu mô-đun là một điểm khởi đầu cho phương pháp này.
andrewmacpherson 18/2/2015

1

như bạn có thể nhìn thấy trong field_ui_display_overview_formtrong modules/field_ui/field_ui.admin.inctrang Display settingsẽ lấp đầy với $instances$extra_fields:

$instances = field_info_instances($entity_type, $bundle);
$field_types = field_info_field_types();
$extra_fields = field_info_extra_fields($entity_type, $bundle, 'display');

trong hàm này có hai vòng tạo trang:

foreach ($instances as $name => $instance) {
   ...
}

foreach ($extra_fields as $name => $extra_field) {
   ...
}

và chỉ trong vòng lặp đầu tiên lặp đi lặp lại trong các trường có các tùy chọn cho labelformatter

vì vậy nếu bạn muốn chức năng này trên các thuộc tính của bạn (như @Clive đã nói):

Bạn sẽ cần phải tự thực hiện toàn bộ cơ chế đó

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.