2016-07-21 34 views
3

這是我的網頁獲取的前端從數據庫和顯示圖像路徑(Octobercms)

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 

有人可以告訴我怎麼走的路徑(圖片來源)?

回答

3

繼文檔:

的的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; 
+0

當圖像被定義爲'fileupload'類型並且通過集成關係'System \ Models \ File'存儲時,這可以很好地工作。如果圖像被定義爲'mediafinder'類型並且該值在數據庫中作爲字符串存儲,該怎麼辦?如何找到它的路徑?我總是收到'在字符串上調用成員函數getPath()'的錯誤消息。您能否提一些建議? – maartenmachiels

相關問題