Как отобразить изображение из функции php?

Как отобразить изображение из функции php? [обновлено]

default.htm

<img id="avatar-image" alt="Jason's Image" src="{{ getAvatarImage() }}" />

Компонент.php

public function getAvatarImage()
{
    $var = \System\Models\File::select('disk_name')->where('attachment_id', $avatar_id)->first();       

    if (count($var) == 0) return "";

    return $var->path;
}

Как получить источник изображения и отобразить изображение?


person BEX    schedule 19.07.2016    source источник
comment
добавьте echo при вызове функции и попробуйте: <img id="avatar-image" alt="Jason's Image" src="{{ echo __SELF__.getAvatarImage(avatar_id); }}" />   -  person Dhara Parmar    schedule 19.07.2016
comment
это не работает :(   -  person BEX    schedule 19.07.2016
comment
откуда avatar_id (в default.htm)?   -  person BeetleJuice    schedule 19.07.2016


Ответы (3)


Прежде всего, вы уверены, что эта функция возвращает правильный путь к файлу? Я буду считать, что да.

Итак, при организации вещей вы пытаетесь использовать пользовательскую функцию внутри среды Twig< /а>.

Для этого вам необходимо зарегистрировать свою функцию в CMS расширяющей ветки.


ШАГ 1

Создайте метод registerMarkupTags(), который возвращает массив пользовательских функций, назначенных «именем функции» в классе регистрации плагина.

Ваш плагин/Plugin.php

public function registerMarkupTags() {
  return [
    'functions' => [
      'getAvatarImage' => [ $this, 'getAvatarImageInternal' ]
    ]
  ];
}

ШАГ 2

Мы ссылаемся на пользовательскую функцию на $this, поэтому добавьте метод в тот же класс.

Ваш плагин/Plugin.php

public function registerMarkupTags() {
  return [
    'functions' => [
      'getAvatarImage' => [ $this, 'getAvatarImageInternal' ]
    ]
  ];
}

/**
 * Example of registering a Twig function.
 *
 * @return string
 */
public function getAvatarImageInternal() {
  // Your function body goes here.
  $path = 'http://app.localhost/storage/image.jpg';
  return $path;
}

ШАГ 3

Теперь пользовательская функция зарегистрирована, и вы можете использовать ее внутри среды Twig.

<img src="{{ getAvatarImage() }}" />
person Alexandre Thebaldi    schedule 19.07.2016

Во-первых, getAvatarImage не является методом static. Это означает, что вам нужен его экземпляр, чтобы иметь возможность вызывать его. Второй; чтобы отобразить изображение, вам нужно повторить его, чтобы получить возвращаемое значение (а не просто вызвать его). Ваш код должен был выглядеть примерно так:

<?php
    $avatar_id  =  10; // JUST A SIMPLE SIMULATION. YOU SHOULD HAVE A WAY TO GET THE ID
    $obj        = new ClassContainingGetAvatarImageMethod();
    $imgURL     = $obj->getAvatarImage($avatar_id);
 ?>

   <img id="avatar-image" alt="Jason's Image" src="<?php echo $imgURL;?>" />

OR

   <img id="avatar-image" alt="Jason's Image" src="<?php 
    avatar_id = 10; // WHATEVER THE AVATAR_ID MAY BE
    $obj      = new ClassContainingGetAvatarImageMethod();
    echo $obj->getAvatarImage($avatar_id);?>" />
person Poiz    schedule 19.07.2016

Это не лучший способ выбрать образ прямо из файловой системы. Вместо этого вы можете использовать систему вложений, как я объяснил в этом вопросе Как изменить главную страницу и изображение компонента из бэкенда? как получить атрибуты тега HTML в php?

person Ahmed Essam    schedule 19.07.2016