Перейти до основного вмісту
Головна
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: Перенос каталогу даних в інше місце
    1 рік 1 місяць ago
  • Встановлення webmin на Debian 10 / 11
    1 рік ago
  • Розробка корпоративного порталу, планування та реалізація
    1 рік ago
  • Налаштування сервера nginx для debian 11
    1 рік ago
  • Встановлення та налаштування phpMyAdmin з сервером nginx
    1 рік 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