Я создаю XML-фид типа контента Biography, который имеет поля терминов Entity Reference.Я загружаю узел, загружаю поля Paragraph, затем использую Term :: load для загрузки объекта термина в поле абзаца, которое является термином по номеру идентификатора термина.Однако, когда я пытаюсь извлечь поля из самого термина, я не могу сделать это без добавления «Попытка получить свойство необъекта» в строках, где я использую -> name-> value.Поля успешно извлекаются и обрабатываются, ошибки просто приходят с ними.Попытка использовать метод -> getName () полностью прерывает фид.
private function xmlOutput($input) {
$node = Node::load($input);
$educationArray = $node->get('field_group_education');
$educationOutput = [];
foreach ($educationArray as $key => $value) {
$educationGroupID = $node->get('field_group_education')[$key]->target_id;
$educationGroup = Paragraph::load($educationGroupID);
$honors = $educationGroup->get('field_academic_honors')->value;
$degreeID = $educationGroup->get('field_degrees')->target_id;
$degree = Term::load($degreeID)->name->value;
$educationID = $educationGroup->get('field_education')->target_id;
$schoolName = Term::load($educationID)->name->value;
$yearGraduated = $educationGroup->get('field_year_graduated')->value;
$educationRender = '<professionalEducation>
<order>' . $key . '</order>
<school whereField="Name" whereValue="' . $schoolName . '" autoCreate="true"/>
<educationType whereField="Name" whereValue="' . $degree . '" autoCreate="true"/>
<yearGraduated>' . $yearGraduated . '</yearGraduated>
<degree whereField="Name" whereValue="' . $degree . '" autoCreate="true"/> .
<honors>' . $honors . '</honors>
</professionalEducation>';
array_push($educationOutput, $educationRender);
}
$compiled = [
'<education>',
implode($educationOutput),
'</education>',
];
return implode('', $compiled);
}
Это успешно отрисовывается
<education>
<professionalEducation>
<order>0</order>
<school whereField="Name" whereValue="education term 1"
autoCreate="true"/>
<educationType whereField="Name" whereValue="AA" autoCreate="true"/>
<yearGraduated>1990</yearGraduated>
<degree whereField="Name" whereValue="AA" autoCreate="true"/>
<honors>Honors 1</honors>
</professionalEducation>
<professionalEducation>
<order>1</order>
<school whereField="Name" whereValue="education term 2" autoCreate="true"/>
<educationType whereField="Name" whereValue="AB" autoCreate="true"/>
<yearGraduated>2000</yearGraduated>
<degree whereField="Name" whereValue="AB" autoCreate="true"/>
<honors>honors 2</honors>
</professionalEducation>
</education>
Но я получаю ошибки PHP, которые "пытаютсяполучить свойство необъектного "для строк с -> name-> value, которое я пытался использовать -> getName (), но это немедленно выдает ошибку 500.Использование isset для проверки наличия значения также не сработало для того, чтобы заставить getName () работать.
$degree = '';
if(isset(Term::load($degreeID)->name->value)) {
$degree = $degreeObject->name->value;
}
Работает, но ошибки остаются
$degree = '';
if(isset(Term::load($degreeID)->getName())) {
$degree = $degreeObject->getName();
}
Выдает ошибку 500, но также избавляется от ошибки