2017-12-19 4 views
-1

Ich möchte Variablen aus der Komponente nehmen. Dies ist mein Code:Nimm die Variable von der Komponente

<!-- Gallery --> 
<div class="galeryWraper"> 
<div class="row" > 
    <h3>{{ galeria1.post.title }} {{ galeria1.post.description }}</h3> 
     <div class="col-sm-8"> 

      {% component 'galeria1' %} 

     </div> 
     </div> 
</div> 

<!-- End Gallery --> 

Galery funktioniert gut. Aber Titel und Beschreibung der Galerie werden nicht angezeigt.

Weiß jemand warum?

Antwort

0

Um die Eigenschaft von dem Zweig partials für die Komponente zuzugreifen, nutzt die __SELF__ Variable, die mit dem Component-Objekt verweist:

{{ __SELF__.property('title') }}

+0

Hallo. Leider funktioniert es nicht für mich :(. AcoDocs, die hier sind: [link] (http://Octobercms.com/docs/cms/components) sollte dies funktionieren: '{{__SELF __. Post.title}}' where ' __SELF__ 'sollte durch den Alias ​​der Komponente ersetzt werden –

+0

ok, also sieht es nach der Untersuchung Ihres Codes so aus, als ob Sie der Seite kein" post "-Objekt zugewiesen haben, das heißt, Sie sollten auf" title "-Eigenschaft' 'zugreifen können '{{galeria1.title}}' '' – Edison

+0

Eigentlich funktioniert dein Weg :). Das Problem war, dass in dieser Komponente, die "RJGallery" ist, nicht die Eigenschaft "title", sondern die Eigenschaft "lang" vorhanden ist, die den Namen der Galerie enthält :). –

1

post muss in dieser Komponente

public $post = null; 

jetzt innerhalb onRun oder einige, wie Sie es brauchen, einen Wert zuzuweisen

public function onRun() { 
    $this->post = 'value-text'; 
} 

dann wird es nur zur Verfügung, wie

{{ galeria1.post }} 
// output 'value-text' 
definiert werden

so kann th sein

public function onRender() 
{ 
    $this->page['post'] = 'some data'; 
} 

ODER

public function onRun() 
{ 
    $this->page['post'] = 'some data'; 
} 

so dieser Beitrag direkt auf der Seite zugewiesen ist nicht auf den: bei post-Variable von Ihnen direkt an Seite übergeben wird nicht

zum Beispiel Komponente zugewiesen Komponente selbst.

Lösung:

Sie so etwas wie dieses

public $post= ''; 
public function onRender OR onRun() // choose method where data is added to page 
{ 
    $this->post = 'some data'; 
    $this->page['post'] = $this->post; 
} 
+0

In Komponentencode i diese: public function OnRender () { $ this-> gallery = $ this-> page ['gallery'] = GalleryModel :: find ($ this- > Eigenschaft ('idGallery')); // Inject alle Galerie-Eigenschaften auf Seite. foreach ($ this-> getProperties() als $ key => $ value) { $ this-> Seite [$ key] = $ value; } } So Eigenschaften sind in der "Seite" Wie Sie sie durch Zweig zugreifen? –

+0

Wenn Eigenschaften innerhalb der Seite sind, können Sie sie direkt verwenden {{id}} {{title}} {{description}} –

2

Sie jene Variable direkt wie diese

zugreifen können tun können
{{ post.title }} {{ post.description }} 

wenn sie wie unten auf Ihrer Komponente eingestellt werden

public function onRun(){ 
    $post = array(); 
    $post['title'] = 'some-title'; 
    $post['description'] = 'some-description'; 
    $this->page['post'] = $post; 
} 
+0

Danke Hardik für die Formatierung meiner Antwort. Ich bin neu in der stackoverflow Community. BTW können Sie mir sagen, warum haben Sie die Antwort runtergestimmt? –

+0

Snap !!, ich möchte nicht abstimmen, ich habe es nicht zielgerichtet gemacht Ich habe versucht, meinen Mac zu bewegen und habe leider darauf geklickt, aber jetzt gibt es keine Möglichkeit, ihn auf Null zu setzen und ich kann nicht do up abstimmen, Entschuldigung für das –

+0

und ich bemerkte auch, dass Ihre Antwort ist gleich wie unter eins so seine Art der Vervielfältigung, versuchen, Doppelarbeit in der Antwort zu vermeiden. –

Verwandte Themen