service
18 sites
Security covered
πΊπ¦
This module is maintained by Ukrainian developers.Please consider supporting Ukraine in a fight for their freedom and safety of Europe.
The module provides traits and extended base classes to make dependency injections easier.
Post-Installation
Example of using this module in a block class:
namespace Drupal\hello_world\Plugin\Block;
use Drupal\Core\Block\Attribute\Block;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\service\BlockBase;
use Drupal\service\ConfigFactoryTrait;
use Drupal\service\EntityTypeManagerTrait;
use Drupal\service\UserDataTrait;
/**
* Provides a 'Hello World' block.
*/
#[Block(
id: "hello_world_block",
admin_label: new TranslatableMarkup("Hello World"),
)]
class HelloWorldBlock extends BlockBase {
use ConfigFactoryTrait;
use EntityTypeManagerTrait;
use UserDataTrait;
/**
* {@inheritdoc}
*/
protected function creation(): static {
return $this
->addConfigFactory()
->addEntityTypeManager()
->addUserData();
}
/**
* {@inheritdoc}
*/
public function build(): array {
$ids = ($storage = $this->entityTypeManager()->getStorage('user'))
->getQuery()
->accessCheck()
->condition('uid', 0, '>')
->sort('created', 'DESC')
->range(0, $this->configFactory()->get('hello_world')->get('limit') ?? 10)
->execute();
if ($ids) {
$phrase = $this->t('hello, world!');
}
return [
'#theme' => 'item_list',
'#title' => $this->t('Greetings to all users!'),
'#items' => array_map(
fn(int $id): TranslatableMarkup => $this->t('@username says: @phrase', [
'@username' => $storage->load($id)->getDisplayName(),
'@phrase' => $this->userData()->get('hello_world', $id, 'phrase') ?? $phrase,
]),
$ids,
),
];
}
}
Additional Requirements
- PHP 8.3 or higher (for version 3.0.0)
- PHP 8.2 or higher (for version from 1.0.0 to 1.0.3 and 2.0.0 or newer)
- PHP 5.5 or higher (for version 1.0.4 or newer)