如何从php函数显示图像?

时间:2016-07-19 06:10:37

标签: php image components octobercms

如何从php函数显示图像? [更新]

的default.htm

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

Component.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;
}

如何获取图像源并显示图像?

3 个答案:

答案 0 :(得分:1)

首先,您确定此函数返回正确的文件路径吗?我会考虑

因此,组织事情,您尝试做的是使用Twig environment内的自定义功能。

为此,您需要在CMS extending twig中注册您的功能。

第1步

创建一个registerMarkupTags()方法,该方法返回由&#34;函数名称&#34;分配的自定义函数数组。在插件注册类中。

<强> YourPlugin / Plugin.php

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

第2步

我们将自定义函数引用到$this,因此请将该方法添加到同一个类中。

<强> YourPlugin / 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() }}" />

答案 1 :(得分:0)

首先,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);?>" />

答案 2 :(得分:0)

这不是直接从文件系统中选择图像的好方法。相反,你可以使用我在这个问题中解释的附件系统 How to change the front page & component image from the backend? how to get HTML tag attributes in php?