class ShsController in Simple hierarchical select 2.0.x
Same name and namespace in other branches
- 8 src/Controller/ShsController.php \Drupal\shs\Controller\ShsController
Controller for getting taxonomy terms.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, RedirectDestinationTrait, StringTranslationTrait
- class \Drupal\shs\Controller\ShsController
Expanded class hierarchy of ShsController
File
- src/
Controller/ ShsController.php, line 15
Namespace
Drupal\shs\ControllerView source
class ShsController extends ControllerBase {
/**
* The dependency injection container.
*
* @var \Symfony\Component\DependencyInjection\ContainerInterface
*/
protected $container;
/**
* Construct a new ShsController object.
*/
public function __construct(ContainerInterface $container) {
$this->container = $container;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static($container);
}
/**
* Load term data.
*
* @param string $identifier
* Name of field to load the data for.
* @param string $bundle
* Bundle (vocabulary) identifier to limit the return list to a specific
* bundle.
* @param int $entity_id
* Id of parent term to load all children for. Defaults to 0.
*
* @return CacheableJsonResponse
* Cacheable Json response.
*/
public function getTermData($identifier, $bundle, $entity_id = 0) {
$context = [
'identifier' => $identifier,
'bundle' => $bundle,
'parent' => $entity_id,
];
$response = new ShsCacheableJsonResponse($context);
$cache_tags = [];
$result = [];
$langcode_current = $this
->languageManager()
->getCurrentLanguage(LanguageInterface::TYPE_CONTENT)
->getId();
/** @var \Drupal\taxonomy\TermStorageInterface $storage */
$storage = $this
->entityTypeManager()
->getStorage('taxonomy_term');
$translation_enabled = FALSE;
if ($this
->moduleHandler()
->moduleExists('content_translation')) {
/** @var \Drupal\content_translation\ContentTranslationManagerInterface $translation_manager */
$translation_manager = $this->container
->get('content_translation.manager');
// If translation is enabled for the vocabulary, we need to load the full
// term objects to get the translation for the current language.
$translation_enabled = $translation_manager
->isEnabled('taxonomy_term', $bundle);
}
$access_unpublished = $this
->currentUser()
->hasPermission('administer taxonomy') || $this
->currentUser()
->hasPermission('view unpublished terms in ' . $bundle);
$cache_tags[] = 'access_unpublished:' . $access_unpublished;
/** @var \Drupal\taxonomy\TermInterface[] $terms */
$terms = $storage
->loadTree($bundle, $entity_id, 1, $translation_enabled);
foreach ($terms as $term) {
$langcode = $langcode_current;
if ($translation_enabled && $term instanceof TranslatableInterface && $term
->hasTranslation($langcode)) {
$term = $term
->getTranslation($langcode);
}
else {
$langcode = $term->default_langcode;
}
$tid = $translation_enabled ? $term
->id() : $term->tid;
$published = $translation_enabled ? $term
->isPublished() : $term->status;
if (!$published && !$access_unpublished) {
continue;
}
$result[] = (object) [
'tid' => $tid,
'name' => $translation_enabled ? $term
->getName() : $term->name,
'description__value' => $translation_enabled ? $term
->getDescription() : $term->description__value,
'langcode' => $langcode,
'hasChildren' => shs_term_has_children($tid),
];
$cache_tags[] = sprintf('taxonomy_term:%d', $tid);
}
$response
->addCacheableDependency(new ShsTermCacheDependency($cache_tags));
$response
->setData($result, TRUE);
return $response;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ControllerBase:: |
protected | property | The configuration factory. | |
ControllerBase:: |
protected | property | The current user service. | 1 |
ControllerBase:: |
protected | property | The entity form builder. | |
ControllerBase:: |
protected | property | The entity type manager. | |
ControllerBase:: |
protected | property | The form builder. | 2 |
ControllerBase:: |
protected | property | The key-value storage. | 1 |
ControllerBase:: |
protected | property | The language manager. | 1 |
ControllerBase:: |
protected | property | The module handler. | 2 |
ControllerBase:: |
protected | property | The state service. | |
ControllerBase:: |
protected | function | Returns the requested cache bin. | |
ControllerBase:: |
protected | function | Retrieves a configuration object. | |
ControllerBase:: |
private | function | Returns the service container. | |
ControllerBase:: |
protected | function | Returns the current user. | 1 |
ControllerBase:: |
protected | function | Retrieves the entity form builder. | |
ControllerBase:: |
protected | function | Retrieves the entity type manager. | |
ControllerBase:: |
protected | function | Returns the form builder service. | 2 |
ControllerBase:: |
protected | function | Returns a key/value storage collection. | 1 |
ControllerBase:: |
protected | function | Returns the language manager service. | 1 |
ControllerBase:: |
protected | function | Returns the module handler. | 2 |
ControllerBase:: |
protected | function | Returns a redirect response object for the specified route. | |
ControllerBase:: |
protected | function | Returns the state storage service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MessengerTrait:: |
protected | property | The messenger. | 27 |
MessengerTrait:: |
public | function | Gets the messenger. | 27 |
MessengerTrait:: |
public | function | Sets the messenger. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
ShsController:: |
protected | property | The dependency injection container. | |
ShsController:: |
public static | function |
Instantiates a new instance of this class. Overrides ControllerBase:: |
|
ShsController:: |
public | function | Load term data. | |
ShsController:: |
public | function | Construct a new ShsController object. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 4 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |