trait EntityTranslationRenderTrait in Drupal 8
Same name and namespace in other branches
- 9 core/modules/views/src/Entity/Render/EntityTranslationRenderTrait.php \Drupal\views\Entity\Render\EntityTranslationRenderTrait
- 10 core/modules/views/src/Entity/Render/EntityTranslationRenderTrait.php \Drupal\views\Entity\Render\EntityTranslationRenderTrait
Trait used to instantiate the view's entity translation renderer.
Hierarchy
- trait \Drupal\views\Entity\Render\EntityTranslationRenderTrait
6 files declare their use of EntityTranslationRenderTrait
- BulkForm.php in core/
modules/ views/ src/ Plugin/ views/ field/ BulkForm.php - DataEntityRow.php in core/
modules/ rest/ src/ Plugin/ views/ row/ DataEntityRow.php - EntityOperations.php in core/
modules/ views/ src/ Plugin/ views/ field/ EntityOperations.php - EntityRow.php in core/
modules/ views/ src/ Plugin/ views/ row/ EntityRow.php - LinkBase.php in core/
modules/ views/ src/ Plugin/ views/ field/ LinkBase.php
File
- core/
modules/ views/ src/ Entity/ Render/ EntityTranslationRenderTrait.php, line 13
Namespace
Drupal\views\Entity\RenderView source
trait EntityTranslationRenderTrait {
/**
* The renderer to be used to render the entity row.
*
* @var \Drupal\views\Entity\Render\EntityTranslationRendererBase
*/
protected $entityTranslationRenderer;
/**
* Returns the current renderer.
*
* @return \Drupal\views\Entity\Render\EntityTranslationRendererBase
* The configured renderer.
*/
protected function getEntityTranslationRenderer() {
if (!isset($this->entityTranslationRenderer)) {
$view = $this
->getView();
$rendering_language = $view->display_handler
->getOption('rendering_language');
$langcode = NULL;
$dynamic_renderers = [
'***LANGUAGE_entity_translation***' => 'TranslationLanguageRenderer',
'***LANGUAGE_entity_default***' => 'DefaultLanguageRenderer',
];
if (isset($dynamic_renderers[$rendering_language])) {
// Dynamic language set based on result rows or instance defaults.
$renderer = $dynamic_renderers[$rendering_language];
}
else {
if (strpos($rendering_language, '***LANGUAGE_') !== FALSE) {
$langcode = PluginBase::queryLanguageSubstitutions()[$rendering_language];
}
else {
// Specific langcode set.
$langcode = $rendering_language;
}
$renderer = 'ConfigurableLanguageRenderer';
}
$class = '\\Drupal\\views\\Entity\\Render\\' . $renderer;
$entity_type = $this
->getEntityTypeManager()
->getDefinition($this
->getEntityTypeId());
$this->entityTranslationRenderer = new $class($view, $this
->getLanguageManager(), $entity_type, $langcode);
}
return $this->entityTranslationRenderer;
}
/**
* Returns the entity translation matching the configured row language.
*
* @param \Drupal\Core\Entity\EntityInterface $entity
* The entity object the field value being processed is attached to.
* @param \Drupal\views\ResultRow $row
* The result row the field value being processed belongs to.
*
* @return \Drupal\Core\Entity\FieldableEntityInterface
* The entity translation object for the specified row.
*/
public function getEntityTranslation(EntityInterface $entity, ResultRow $row) {
// We assume the same language should be used for all entity fields
// belonging to a single row, even if they are attached to different entity
// types. Below we apply language fallback to ensure a valid value is always
// picked.
$translation = $entity;
if ($entity instanceof TranslatableInterface && count($entity
->getTranslationLanguages()) > 1) {
$langcode = $this
->getEntityTranslationRenderer()
->getLangcode($row);
$translation = $this
->getEntityRepository()
->getTranslationFromContext($entity, $langcode);
}
return $translation;
}
/**
* Returns the entity type identifier.
*
* @return string
* The entity type identifier.
*/
public abstract function getEntityTypeId();
/**
* Returns the entity type manager.
*
* @return \Drupal\Core\Entity\EntityTypeManagerInterface
* The entity type manager.
*/
protected function getEntityTypeManager() {
@trigger_error('Classes that use EntityTranslationRenderTrait must provide a getEntityTypeManager() method since drupal:8.7.0. This implementation will become abstract before Drupal 9.0.0. See https://www.drupal.org/node/2549139.', E_USER_DEPRECATED);
return \Drupal::entityTypeManager();
}
/**
* Returns the entity repository.
*
* @return \Drupal\Core\Entity\EntityRepositoryInterface
* The entity repository.
*/
protected function getEntityRepository() {
@trigger_error('Classes that use EntityTranslationRenderTrait must provide a getEntityRepository() method since drupal:8.7.0. This implementation will become abstract before drupal:9.0.0. See https://www.drupal.org/node/2549139.', E_USER_DEPRECATED);
return \Drupal::service('entity.repository');
}
/**
* Returns the language manager.
*
* @return \Drupal\Core\Language\LanguageManagerInterface
* The language manager.
*/
protected abstract function getLanguageManager();
/**
* Returns the top object of a view.
*
* @return \Drupal\views\ViewExecutable
* The view object.
*/
protected abstract function getView();
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
EntityTranslationRenderTrait:: |
protected | property | The renderer to be used to render the entity row. | |
EntityTranslationRenderTrait:: |
protected | function | Returns the entity repository. | 7 |
EntityTranslationRenderTrait:: |
public | function | Returns the entity translation matching the configured row language. | |
EntityTranslationRenderTrait:: |
protected | function | Returns the current renderer. | |
EntityTranslationRenderTrait:: |
abstract public | function | Returns the entity type identifier. | 7 |
EntityTranslationRenderTrait:: |
protected | function | Returns the entity type manager. | 7 |
EntityTranslationRenderTrait:: |
abstract protected | function | Returns the language manager. | 7 |
EntityTranslationRenderTrait:: |
abstract protected | function | Returns the top object of a view. | 7 |