starry_rating-1.0.x-dev/src/Plugin/Field/FieldFormatter/StarRatingFormatter.php
src/Plugin/Field/FieldFormatter/StarRatingFormatter.php
<?php
namespace Drupal\starry_rating\Plugin\Field\FieldFormatter;
use Drupal\Core\Field\Attribute\FieldFormatter;
use Drupal\Core\Field\FormatterBase;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\StringTranslation\TranslatableMarkup;
/**
* Formatter to show star rating widget.
*/
#[FieldFormatter(
id: 'starry_rating_rating_formatter',
label: new TranslatableMarkup('Star rating formatter'),
field_types: ['starry_rating'],
)]
class StarRatingFormatter extends FormatterBase {
/**
* {@inheritdoc}
*/
public function viewElements(FieldItemListInterface $items, $langcode) {
$elements = [];
foreach ($items as $delta => $item) {
$value = $item->value ?? 0;
$elements[$delta] = [
'#markup' => '<div class="star-rating" data-read-only="true" data-stars="' . $value . '"></div>',
'#attached' => ['library' => ['starry_rating/star_rating']],
];
}
return $elements;
}
}
