TestDisplayVariant.php in Drupal 9
File
core/modules/system/tests/modules/display_variant_test/src/Plugin/DisplayVariant/TestDisplayVariant.php
View source
<?php
namespace Drupal\display_variant_test\Plugin\DisplayVariant;
use Drupal\Core\Cache\CacheableMetadata;
use Drupal\Core\Display\VariantBase;
use Drupal\Core\Display\PageVariantInterface;
use Drupal\Core\Display\ContextAwareVariantInterface;
class TestDisplayVariant extends VariantBase implements PageVariantInterface, ContextAwareVariantInterface {
protected $mainContent = [];
protected $title = '';
protected $contexts = [];
public function getContexts() {
return $this->contexts;
}
public function setContexts(array $contexts) {
$this->contexts = $contexts;
return $this;
}
public function setMainContent(array $main_content) {
$this->mainContent = $main_content;
return $this;
}
public function setTitle($title) {
$this->title = $title;
return $this;
}
public function build() {
$config = $this
->getConfiguration();
if (empty($config['required_configuration'])) {
throw new \Exception('Required configuration is missing!');
}
$contexts = $this
->getContexts();
if (!isset($contexts['context'])) {
throw new \Exception('Required context is missing!');
}
$build = [];
$build['content']['default'] = [
'#markup' => $config['required_configuration'] . ' ' . $contexts['context']
->getContextValue(),
];
CacheableMetadata::createFromObject($this)
->applyTo($build);
return $build;
}
}