[英]Getting Taxonomy term name from target ID - D9
从分类目标 ID 获取分类术语名称:
我有一个接受多个值的分类术语。 它呈现为多选字段。 我正在尝试读取字段的目标 ID,并在预处理函数中使用以下代码从中找出术语名称:
$granttype = $user_entity->field_user_grant_type->getValue();
foreach($granttype as $gt)
{
$granttype_name = \Drupal\taxonomy\Entity\Term::load($gt)->label();
}
dd($granttype_name);
$variables['grant_type'] = $granttype_name;
dd($granttype) 显示以下输出:
但是,用于确定术语名称的 foreach 循环无法正常工作。
dd($granttype_name) 结果为:
The website encountered an unexpected error. Please try again later.
TypeError: Illegal offset type in Drupal\Core\Entity\EntityStorageBase->load() (line 297 of core/lib/Drupal/Core/Entity/EntityStorageBase.php).
我正在遍历目标 ID 并尝试获取术语名称。 但它不起作用。 有什么帮助吗?
更新:我尝试了以下代码行:
$term = term::load($gt);
$name = $term->getName();
仍然没有运气:(同样的错误
这是一个如何执行此操作的示例:
$grant_type = $user_entity->field_user_grant_type->entity;
if ($grant_type instanceof \Drupal\taxonomy\TermInterface) {
var_dump($grant_type->label());
}
如果您有多个引用的术语,请使用:
$grant_types = $user_entity->field_user_grant_types->referencedEntities();
foreach ($grant_types as $grant_type) {
var_dump($grant_type->label());
}
解释:
$term->label()
;首先,您需要包括
use Drupal\taxonomy\Entity\Term;
use Drupal\taxonomy\TermInterface;
其次,检索存储在您的字段 (field_user_grant_type) 中的值并将它们存储在一个数组中:
$myArray = array();
$granttype = $user_entity->get('field_user_grant_type')->getValue();
$granttype
现在将包含一个数组数组。 接下来,您需要收集实际的术语 ID
foreach($granttype as $type){
$myArray[] = $type['target_id'];
}
最后,遍历 $myArray 并获取存储在那里的术语 ID,然后使用每个 ID 获取其对应的术语名称。 在这里,我将它们存储在一个名为grantTypeNames
的新数组中
grantTypeNames = array();
foreach($myArray as $term_id){
$grantTypeNames[] = Term::load($term_id)->get('name')->value;
}
数组$grantTypeNames
现在将包含您想要的术语名称。 我希望这会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.