Drupal 8 Значение поля изображения

Я пытаюсь выяснить, как получить путь к изображению из объекта в Drupal 8. Я думал, что get()->value сделает это, но это просто возвращает пустую строку.

У меня есть тестовая функция:

function getValueTest ($profile_id, $field)
{
   $profile_storage = \Drupal::entityManager()->getStorage('profile'); 
   $profile = $profile_storage->load($profile_id);
   if ($profile != null)
   {
      if ($profile->hasField ($field))
      {
         return $profile->get ($field)->value;
      }
   }

   return "No field" . $field;
}

Предположим, что идентификатор профиля 3 имеет два поля field_first_name и field_mugshot. Если я позвоню:

dpm ($this->getValueTest (3, 'field_first_name'));
dpm ($this->getValueTest (3, 'field_mugshot'));

Первый вызов правильно отображает первое имя в области сообщений, а второй просто дает пустую строку. Мне нужен путь к изображению, чтобы я мог обработать его содержимое.


person PhotoKevin    schedule 28.12.2016    source источник


Ответы (1)


Вы можете использовать следующие методы, чтобы получить uri или URL:

$entity->get('field_image')->entity->getFileUri();
$entity->get('field_image')->entity->url();

Это связано с тем, что метод value() должен возвращать значение поля (также известного как fid), поля, которое в данном случае является ссылкой на объект.

person Rotari Radu    schedule 29.12.2016
comment
Это дает мне именно то, что мне нужно. Спасибо. - person PhotoKevin; 02.01.2017