【问题标题】:How do I display image from php function?如何从 php 函数显示图像?
【发布时间】:2016-11-21 21:20:07
【问题描述】:

如何显示来自 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;
}

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

【问题讨论】:

  • 在函数调用时添加echo并尝试:&lt;img id="avatar-image" alt="Jason's Image" src="{{ echo __SELF__.getAvatarImage(avatar_id); }}" /&gt;
  • 它不工作:(
  • avatar_id 来自哪里(在 default.htm 中)?

标签: php image components octobercms


【解决方案1】:

首先,你确定这个函数返回的是正确的文件路径吗?我会考虑是的

因此,组织事物时,您要做的是在Twig environment 中使用自定义函数。

为此,您需要在 CMS extending twig 中注册您的函数。


第 1 步

创建一个registerMarkupTags() 方法,该方法返回由插件注册类中的“函数名”分配的自定义函数数组。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2016-01-13
        • 1970-01-01
        • 2018-09-23
        • 2016-12-05
        • 1970-01-01
        • 2022-07-12
        • 1970-01-01
        • 2021-09-07
        • 1970-01-01
        相关资源
        最近更新 更多