Здравствуйте, получаю список содержимого определенного типа материала, и мне нужно еще как-то получить значения списка поля, чтобы сформировать массив, но не знаю как такое можно сделать.
Вот мой код:
<?php
function gut_preprocess_page(&$variables)
{
$node = \Drupal::routeMatch()->getParameter('node');
if ($node->getType() === 'page' && (int)$node->id() === 19) {
$faqs = [];
$query = \Drupal::entityQuery('node')->condition('type', 'faq');
$nids = $query->execute();
$contents = $node->loadMultiple($nids);
if (!empty(
$contents)) {
foreach ($contents as $content) {
$type_id = $content->get('field_faq_type')->value;
$faqs[$type_id][] = [
'title' => $content->get('title')->value,
'field_faq_answer' => $content->get('field_faq_answer')->value,
'field_faq_type' => $type_id,
];
}
}
$variables['faqs'] = $faqs;
}
}
?>
В переменной $content хранится вот это значение текущего содержимого https://prnt.sc/1w7ija4 , но не пойму как его достать, сам id я получаю тут $type_id = $content->get('field_faq_type')->value;
Если простыми словами, то мне нужно получить вот этот список https://prnt.sc/1w7irff
Комментарии
<?php
...
$title= $content->getTitle();
//или
$title= $content->label();
...
$uid = $content->getOwnerId();
...
?>
Значения для элемента формы 'options' формируются из массива пар "ключ => значение". То есть, одномерный ассоциативный массив, а не как у вас в коде (
$faqs
).как мне эти значения получить? $faqs построен правильно, я хочу, чтобы он выглядел так:
<?php
$faqs[$type_id] = [
'title' = 'Тип №1'
];
$faqs[$type_id]['list'][] = [
'title' => $content->get('title')->value,
'field_faq_answer' => $content->get('field_faq_answer')->value,
'field_faq_type' => $type_id,
];
?>
Вот я не знаю как мне получить `'Тип №1'`
Во-первых:
<?php
$faqs[$type_id] = [
'title' => 'Тип №1'
// Оператор '= ' - это присваивание, а не указатель ('=>').
];
?>
Во-вторых, уже писал выше:
<?php
...
'title' => $content->getTitle(),
// or
'title' => $content->label(),
...
?>
В чём проблема?
Это да, просто пример писал в блокноте, и не обратил на это внимание
Проблема в том, что мне нужно получить не Наименование содержимого, а наименование Типа из поля `field_faq_type` - https://prnt.sc/1w7irff
Я тут ни пистона не понял, простите. Но на всякий случай:
<?php
...
$node_prototype = \Drupal::service('entity_type.manager')->getStorage('node')->create(['type' => 'faq']); $faq = $node_prototype->getFieldDefinition('field_faq_type')->getFieldStorageDefinition()->getSetting('allowed_values');
...
?>
Да, именно то что нужно, спасибо