Перейти до основного вмісту
Головна
Sysop's Блог Україна

Основна навіґація

  • Головна
  • Новини
  • Статті
  • Про нас
Меню облікового запису користувача
  • Вхід

Рядок навіґації

  1. Головна

Створення обчислюваного поля сутності (computed field)

Posted by sysop, 05 / 08/ 2022 - 10:06

Приклад створення у матеріалів обчислюваного поля "Age", яке повертатиме кількість секунд, що минуло з моменту додавання ноди. Значення не зберігатиметься в базі, а вираховуватиметься при першому зверненні до нього.

1. Створюємо клас поля:

// src/ComputedNodeAgeFieldItemList.php

namespace Drupal\MODULENAME;

use Drupal\Core\Field\FieldItemList;
use Drupal\Core\TypedData\ComputedItemListTrait;
use Drupal\node\NodeInterface;

class ComputedNodeAgeFieldItemList extends FieldItemList {

  use ComputedItemListTrait;

  /**
   * {@inheritdoc}
   */
  protected function computeValue() {
    $node = $this->getEntity(); /** @var NodeInterface $node */
    $node_age = \Drupal::time()->getCurrentTime() - $node->getCreatedTime();
    $this->list[0] = $this->createItem(0, $node_age);
  }

}

2. Додаємо поле до матеріалів:

// src/ComputedNodeAgeFieldItemList.php

namespace Drupal\MODULENAME;

use Drupal\Core\Field\FieldItemList;
use Drupal\Core\TypedData\ComputedItemListTrait;
use Drupal\node\NodeInterface;

class ComputedNodeAgeFieldItemList extends FieldItemList {

  use ComputedItemListTrait;

  /**
   * {@inheritdoc}
   */
  protected function computeValue() {
    $node = $this->getEntity(); /** @var NodeInterface $node */
    $node_age = \Drupal::time()->getCurrentTime() - $node->getCreatedTime();
    $this->list[0] = $this->createItem(0, $node_age);
  }

}

3. Скидаємо кеш.

Після цього можно звертатися до поля стандартним способом:

$age = $node->get('age')->value;

 

Теґи

  • drupal 9
  • Щоб додати коментар, увійдіть
  • 43 перегляди
Категорія
Програмування
Drupal

Коментарі

Категорії

Drupal (11)
Hardware (1)
Linux (14)
Oracle (5)
SEO (2)
Windows (3)
Інше (6)
Бази даних (9)
Віртуалізація (2)
Веб-розробка (3)
Мережеве обладнання (3)
Новини (4)
Програмування (7)
Розробка (5)
Серверне обладнання (3)

Останні матеріали

  • Postgresql: Перенос каталогу даних в інше місце
    2 роки ago
  • Встановлення webmin на Debian 10 / 11
    2 роки ago
  • Розробка корпоративного порталу, планування та реалізація
    2 роки ago
  • Налаштування сервера nginx для debian 11
    2 роки ago
  • Встановлення та налаштування phpMyAdmin з сервером nginx
    2 роки ago

Теґи

hp(1) fusionauth(1) error(1) firewall(1) symfony(1) mysql(3) nginx(2) vsphere(1) windows(2) composer(1) smb(1) debian(2) drupal 9(9) tools(1) apache(1) netstat(1) vlan(1) redirect(1) html(1) git(1) exim(1) ilo(1) postfix(2) webmin(1) directory(1) sql(1) apache 2(1) mail(1) database(1) mkswap(1) seo(1) dba(3) antivirus(1) shell(1) export(1) php(3) drupal 8(3) port scanner(1) postgresql(1) laravel(2) docker(4) mailbox(1) oracle(5) vesta(1) веб-розробка,(1) vmware(1) devops(1) drupal(3) mikrotik(3) printer(1) zimbra(4) redmine(1) windows server(1)
Sysop's Блог Україна

Нижній колонтитул

  • Контакт
  • Політика конфеденційності
  • Портфоліо
  • Про нас

© 2019-2022 Sysop.In.Ua