【问题标题】:Get image path from database and display on the frontend (Octobercms)从数据库获取图片路径并显示在前端(Octobercms)
【发布时间】:2016-11-24 18:23:52
【问题描述】:

这是我的页面

page.htm(标记) - 我设法获取图像名称,但我无法获取图像源

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

{{ file_name }} // working       
{{ avatar_id }} // not working

page.htm(代码)

function onStart()
{
    $var = \System\Models\File::where("field", "=", "avatar")->first();
    $this["file_name"] = $var->file_name;
    $this["avatar_id"] = $var->path;
}

我的模特

model.php

class Settings extends Model
{
    public $implement = ['System.Behaviors.SettingsModel'];

    public $settingsCode = 'dca_plugins_settings';

    public $settingsFields = 'fields.yaml';

    public $attachOne = [ 'avatar' => ['System\Models\File'] ];
}

field.yaml

fields:
  id:
    label: ID
    disabled: true

  name:
    label: Image

  avatar:
    label: Avatar
    type: fileupload
    mode: image
    imageHeight: 150
    imageWidth: 250

谁能告诉我如何获取路径(图片来源)?

【问题讨论】:

    标签: php database model-view-controller octobercms


    【解决方案1】:

    按照文档:

    getPath() 方法返回上传的公共文件的完整 URL。 以下代码将打印类似 ...mysite.com/uploads/public/path/to/avatar.jpg

    在你的情况下,会是这样的:

    $setting = Settings::first(); // Gets some settings model.
    $avatar = $setting->avatar;
    $avatarPath = null;
    
    // Check if setting has an attached avatar.
    if ($avatar) {
      $avatarPath = $avatar->getPath(); // Uploaded public file.
    }
    

    例如,通过 PHP 部分注入到 Twig 环境中。

    $this['avatar_path'] = $avatarPath;
    

    【讨论】:

    • 当图像被定义为类型fileupload并通过集成关系System\Models\File存储时,这非常有效。如果图像被定义为mediafinder 类型并且值作为字符串存储在数据库中怎么办?如何找到它的路径?我总是收到错误消息call to a member function getPath() on string。可以请教吗?
    猜你喜欢
    • 1970-01-01
    • 2017-02-11
    • 2018-05-29
    • 2018-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    • 2018-12-04
    相关资源
    最近更新 更多