2016-07-21 2 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'型として定義され、その値がデータベースに文字列として格納されている場合はどうなりますか?どのようにそれの道を見つけるだろうか?私はいつも 'stringのメンバ関数getPath()を呼び出す'というエラーメッセージを受け取っています。アドバイスをお願いしますか? – maartenmachiels

関連する問題