protected function LanguageSwitchLinks::resolveValues in GraphQL 8.3
Retrieve the list of field values.
Always returns a list of field values. Even for single value fields. Single/multi field handling is responsibility of the base class.
Parameters
mixed $value: The current object value.
array $args: Field arguments.
$context: The resolve context.
\GraphQL\Type\Definition\ResolveInfo $info: The resolve info object.
Return value
\Generator The value generator.
Overrides FieldPluginBase::resolveValues
File
- modules/
graphql_core/ src/ Plugin/ GraphQL/ Fields/ LanguageSwitch/ LanguageSwitchLinks.php, line 90
Class
- LanguageSwitchLinks
- Plugin annotation @GraphQLField( id = "url_language_switch_links", secure = true, name = "languageSwitchLinks", type = "[LanguageSwitchLink]", parents = {"InternalUrl"}, arguments = { "language" = "LanguageId" }, …
Namespace
Drupal\graphql_core\Plugin\GraphQL\Fields\LanguageSwitchCode
protected function resolveValues($value, array $args, ResolveContext $context, ResolveInfo $info) {
if ($value instanceof Url) {
// Use the <front> route if the requested url is the frontpage.
$frontpage = $this->configFactory
->get('system.site')
->get('page.front');
if ('/' . $value
->getInternalPath() === $frontpage) {
$value = Url::fromRoute('<front>');
}
$links = $this->languageManager
->getLanguageSwitchLinks(LanguageInterface::TYPE_URL, $value);
$current = $this->languageManager
->getLanguage($args['language']);
if (!$current) {
$current = $this->languageManager
->getDefaultLanguage();
}
if (!empty($links->links)) {
foreach ($links->links as $link) {
// Yield the link array and the language object of the language
// context resolved from the sub-request.
(yield [
'link' => $link,
'context' => $current,
]);
}
}
}
}