Программно вывести пресет изображения в Drupal 8

Опубликовано 2016.09.08 в разделе Drupal

Предположим что нам известен id файла изображения.
  1. //не забываем
  2. use Drupal\file\Entity\File;
  3.  
  4.  
  5. $file = File::load($image_id);
  6. $variables = array(
  7. 'style_name' => 'thumbnail',
  8. 'uri' => $file->getFileUri(),
  9. );
  10. $image = \Drupal::service('image.factory')->get($variables['uri']);
  11. if ($image->isValid()) {
  12. $variables['width'] = $image->getWidth();
  13. $variables['height'] = $image->getHeight();
  14. }
  15. else {
  16. $variables['width'] = $variables['height'] = NULL;
  17. }
  18. $preset = [
  19. '#theme' => 'image_style',
  20. '#width' => $variables['width'],
  21. '#height' => $variables['height'],
  22. '#style_name' => $variables['style_name'],
  23. '#uri' => $variables['uri'],
  24. ];
  25. $renderer = \Drupal::service('renderer');
  26. $renderer->addCacheableDependency($preset, $file);
  27. $render_image = $renderer->renderPlain($preset)->__toString(); // html код картинки

2 Комментариев

Оставить комментарий

  1. Гость 2017/01/20

    Зачем дважды вызывать метод, чтоб получить одинаковые данные?

    $image = \Drupal::service('image.factory')->get($file->getFileUri());
    maybe
    $image = \Drupal::service('image.factory')->get($variables['uri']);

    Ответить

    1. Админ 2017/01/24

      Метко подмечено

      Ответить

Ваш комментарий успешно создан

Ваш комментарий

  • Для выделения кода оберните его в тэги <code> и </code>
  • Отметьте ключи