2016-07-18 20 views
1

mein Modell settings.phpWie kann ich die Startseite und das Komponentenbild vom Backend aus ändern? Wie bekomme ich HTML-Tag-Attribute in PHP?

class Settings extends Model 
{ 
    public $implement = ['System.Behaviors.SettingsModel']; 
    // A unique code 
    public $settingsCode = 'dca_plugins_settings'; 
    // Reference to field configuration 
    public $settingsFields = 'fields.yaml'; 
    /** 
    * @var array Relations 
    */ 
    public $attachOne = [ 'avatar' => ['System\Models\File'] ]; 
} 

mein Fields.yaml

fields: 
    id: 
    label: ID 
    disabled: true 

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

comp.php meine Komponente

public $avatar_id = 1; 

public function getAvatarImage($avatar_id) 
{ 
    $var = \System\Models\File::select('disk_name')->where('attachment_id', $avatar_id)->first();   
    if (count($var) == 0) return ""; 

    return $var->path; 
} 

function setMyAvatarId($id) 
{ 
    $this->avatar_id = $id; 
} 

mein html default.htm

{% set avatar_id= __SELF__.property("avatar_id") %} 

{% if avatar_id is not empty %} 
{% do __SELF__.setMyAvatarId(avatar_id) %} 
{% endif %} 

<img id="avatar-image" alt="Virtual agent avatar" src="{{ __SELF__.getavatarImage(avatar_id) }}"> 
<script> 
var avatar_id = {{ avatar_id }}; 
</script> 

I Manag e eine zufällige Verbindung zu erhalten, aber das Bild wird nicht I manage to get a random link but the image is not shown

backend - model settings

Backend gezeigt - Modelleinstellungen

Wer weiß, wie Seiteneigenschaften definieren? Wie verknüpfe ich meine Seite mit den Modelleinstellungen?

Wie kann ich es funktionieren lassen? pls mir jemand helfen ~~ Ich bin so verloren :(

Antwort

1

Um das Bild zu ändern Sie dies zu Ihrem Modell hinzufügen:

public $attachOne = ['avatarImage']; 

und Sie müssen nicht eine Spalte in der Datenbank erstellen aufgerufen . avatarImage weil Oktober Ihr Bild automatisch in einer anderen Tabelle ‚system_files‘ oder so ähnlich genannt speichert Also in Ihrem fields.yaml werden Sie diese hinzufügen:

avatarImage: 
    type: mediafinder 
    mode: image 
    label: My Avatar 

Dann Oktober eine Mediafinder Form Widget schaffen in Ihren Einstellungen Controller in th Das Bedienfeld und Sie können es ändern. Und das Bild in der Frontend-Seite zeigen Sie einige Codes in dem PHP-Code-Abschnitt der Seite

$this['settings'] = //The Code to Get the Model; 

und einfach können Sie das Bild Methode getPath() angezeigt werden hinzuzufügen.

<img src="{{ settings.getPath() }}" /> 

Wenn der obige Code nicht funktioniert können Sie es mit ersetzen:

<img src="{{ settings.getPath()|media" /> 

ich denke, die zweite richtig funktioniert, habe ich nicht benutzt Oktober für eine Weile: D

Ich hoffe das hilft dir.

+0

Danke :) Ich werde es später versuchen. Übrigens, wissen Sie, wie man eine eindeutige ID für Komponenten setzt? Wenn ich die Komponente_1 dupliziere, können beide Komponenten (Komponente_1 und eine andere Komponente_1) normal auf derselben Seite arbeiten. – BEX

+0

Ich habe einige Änderungen an meinem Beitrag vorgenommen. Könnten Sie bitte einen Blick darauf werfen? Danke :) – BEX

+0

Eigentlich kann man die Avatar ID nicht auf diese Weise setzen. Aber überprüfen Sie den Quellcode der Seite, wenn Sie den richtigen Dateinamen des Bildes erhalten haben, aber der Pfad kein vollständiger Pfad ist, müssen Sie '| media' zum src in Ihrem Frontend hinzufügen. Wenn Sie mir einen Screenshot des Quellcodes der Seite zur Verfügung stellen können, kann ich Ihnen mehr verstehen und helfen. –