Різниця між полем і екземпляром поля?


15

Коли ми переходимо до шляху /admin/structure/types/manage/article/fieldsта використовуємо Add new fieldопцію чи Add existing fieldопцію, чи створює це поле, створює екземпляр поля чи додає екземпляр поля? Як розмежувати їх? Отже, програмно, коли використовувати field_create_field , field_create_instanіe та field_attach API?

У документації польових API він згадує лише інтерфейс адміністратора і ніколи не розповідає про шлях, куди потрібно створювати і поля, і екземпляри поля. Тож це заплутано. Я навіть не знаю, чи я навіть має сенс.


Це повинно демістифікувати це: dikini.net/31.08.2010/…
Клайв

і в звичайному випадку кожне додане вами поле створює нове поле в базі даних, а коли ви додаєте існуюче поле, воно не створює нову таблицю, просто додає її до існуючої таблиці.
Мухаммед Шамеем

1
@Mohammed Shameem, спасибі тоді який екземпляр? Який випадок використання? А точніше, де ми його використовуємо насправді?
Євген Гером

1
завжди краще використовувати один і той же екземпляр поля, якщо мета або функція буде однаковою. наприклад, у вас є різний тип вмісту з однаковим таксономією vocab, який потрібно додати до всіх. було б краще додати одне і те ж поле до всього типу вмісту, а не створювати різні поля для кожного типу вмісту. Всередині це зменшило б кількість таблиць, побудованих друпалом. і пошук на vocab став би кращим.
Мохаммед Шамей

1
Отже поля, які ми бачимо на шляху, - node/add/articleце екземпляри поля (які повторно використовуються у кількох різних типах сутності). І поля на шляху - /admin/structure/types/manage/article/fieldsце поля. У базі даних я не бачу таблицю екземплярів поля, а лише таблицю field_data, яку, я думаю, ми отримуємо, коли ми вперше створюємо поле за /admin/structure/types/manage/article/fieldsдопомогою шляху field_create_field. Потім екземпляр додається до групи (стаття в цьому випадку), яку ми бачимо на шляху node/add/article.
Євген Гером

Відповіді:


24

Поле - це основне визначення самого поля. Екземпляр поля - це екземпляр цього поля, приєднаний до сутності / групи.

  1. Поля створюються за допомогою field_create_field
  2. Польові екземпляри, з field_create_instance

Щоб перевірити, чи існує поле чи примірник, використовуйте

  1. field_info_field або
  2. field_info_інстанція

Коли ви створюєте поле через інтерфейс користувача, Drupal завжди створює екземпляр поля на цьому об'єкті / пакеті.

Якщо ви додаєте наявне поле, дані про поля клонуються та створюється екземпляр поля в новому об'єкті / пакеті.

Нарешті, налаштування поля застосовуються глобально до цього поля, налаштування екземплярів поля можуть відрізнятися між сукупностями сутності.


2
Дуже дякую, ти очистив мої сумніви. Якби я мав привілей, я поставив би +1 вашій публікації.
Євген Гером
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.