Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Zugriff auf child-Objekte eines Objekts

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • accelle
    antwortet
    Zitat von mknx Beitrag anzeigen
    ja klar, Du musst halt ein PHP-Skript schreiben.
    OK. Find' ich irgendwo ein Beispiel oder eine kleine Anleitung?

    Habe Docu, Wiki und sämtliche Threads, die ich mit der Suche nach php gefunden habe, durchgesehen. Habe trotzdem leider keinerlei Idee, wie ich mittels php auf die items zugreifen kann um diese dann dem Twig zur Verfügung zu stellen, damit ich z.B. eine solche Prüfung machen kann:

    Code:
    {% if [B][COLOR="Red"]UG.Buero.RTR.anzeigen == '1'[/COLOR][/B] %}
        ...
        ...
    {% endif %}
    Gruß
    Peter

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hallo Peter,

    ja klar, Du musst halt ein PHP-Skript schreiben.

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • accelle
    antwortet
    Zitat von Apollo Beitrag anzeigen
    Nein, das geht so nicht, denn die Auswertung willst du ja zur Laufzeit auf dem Browser. Das geht nur mit Javascript. Kannst ja mal in die widgets/widgets.js reingucken.
    Gruss
    Wenn ich nun statische Information aus der smarthome.conf auswerten möchte, die ja auf dem Server vorliegt, gäbe es dafür eine Möglichkeit? Das brauche ich ja nicht zur Laufzeit, sondern es liegt schon vor, wenn die Twig-Engine die Seiten generiert.

    Gruß
    Peter

    Einen Kommentar schreiben:


  • Apollo
    antwortet
    Zitat von accelle Beitrag anzeigen
    Das heißt, wenn ich als Parameter beim Aufruf eines Widgets z.B. rcd~'.xxx' übergebe und rcd hat den Wert 'UG.Buero.RCD', dann gibt das zusammen ja 'UG.Buero.RCD.xxx'.
    Ja, zu Items können so zusammengesetzt werden.

    Zitat von accelle Beitrag anzeigen
    Dann kann ich eine Auswertung auf para machen, also z.B.
    Code:
    {% if para == 1 %}
    Nein, das geht so nicht, denn die Auswertung willst du ja zur Laufzeit auf dem Browser. Das geht nur mit Javascript. Kannst ja mal in die widgets/widgets.js reingucken.

    Gruss

    Einen Kommentar schreiben:


  • accelle
    antwortet
    Das heißt, wenn ich als Parameter beim Aufruf eines Widgets z.B. rcd~'.xxx' übergebe und rcd hat den Wert 'UG.Buero.RCD', dann gibt das zusammen ja 'UG.Buero.RCD.xxx'.

    Code:
    {{ widget_name('My-ID', rcd~'.xxx') }}
    Das Widget ist definiert mit

    Code:
    {% macro widget_name(id, para) %}
    Dann kann ich eine Auswertung auf para machen, also z.B.

    Code:
    {% if para == 1 %}
    oder so ähnlich?

    Wie genau geht das, denn meine Versuche damit sind fehlgeschlagen. para hat immer den Wert 'UG.Buero.RCD.xxx' und ich will ja abfragen, ob UG.Buero.RCD.xxx == 1 ist :-(

    Gruß
    Peter

    Einen Kommentar schreiben:


  • Apollo
    antwortet
    Ja, den Wert auswerten kann man schon. Aber man kann nicht überprüfen ob es ein Item wirklich gibt und ob für das Item vielleicht mal ein Wert kommt.

    Gruss

    Einen Kommentar schreiben:


  • accelle
    antwortet
    OK, das war mir so nicht bewusst. Ich dachte, dass man auch zur Laufzeit den Wert eines Objekts auswerten kann.

    Hab es jetzt mal durch einen konstanten Wert je Raum ersetzt.

    Danke & Gruß
    Peter

    Einen Kommentar schreiben:


  • Apollo
    antwortet
    Zitat von accelle Beitrag anzeigen
    Leider tut das aber nicht. Das wird immer als false ausgewertet. Ich vermute, dass das nur den Namen und nicht den Inhalt vergleicht.
    Ja, wie Robert schon sagt, das geht so nicht, weil das eine am "Server" erzeugt wird und zur Template-Engine gehört und ausschließlich HTML-Seiten zusammenbaut.

    Gruss

    Einen Kommentar schreiben:


  • Robert
    antwortet
    das meinte ich mit "statisch" - das was du willst geht ziemlich sicher nicht - da dann schon auf dem Server geprüft werden müsste, ob das jeweilige zusammengebastelte Item überhaupt existiert.

    Einen Kommentar schreiben:


  • accelle
    antwortet
    Hallo Robert,

    Deine Mutmaßung hat gepasst. Wenn der Parameter rcd das rcd-Objekt eines Raums enthält (genauer gesagt den Namen des rcd-Objekts), dann kann man mit

    Code:
    rcd~'.xxx'
    auf das Child xxx zugreifen. Allerdings funktioniert das nur, wenn man den Parameter an ein anderes Widget weitergibt, z.B. einen switch.

    Wenn man aber eine Abfrage machen will, um zu entscheiden, ob ein Objekt angezeigt wird oder nicht, dann würde ich gerne etwas in der Art

    Code:
    {% if rcd~'.xxx' == 1 %}
    machen. Leider tut das aber nicht. Das wird immer als false ausgewertet. Ich vermute, dass das nur den Namen und nicht den Inhalt vergleicht.

    Wer weiß weiter?

    Danke und Gruß
    Peter

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Mutmaßung: Im widget-Code einfach das ".xxxxx" ergänzen. Dann wird das Item vom Backend mit angefordert. Das ist dann aber statisch und setzt immer die gleichen Childs voraus.

    Einen Kommentar schreiben:


  • accelle
    hat ein Thema erstellt - √ - Zugriff auf child-Objekte eines Objekts.

    - √ - Zugriff auf child-Objekte eines Objekts

    Hallo,

    kann man im HTML-Code eines Widgets auf die child-Objekte eines Objekts zugreifen?

    Beispiel
    Code:
    smartvisu.conf:
    
    [UG]
        [[Buero]]
            [[[RCD]]]
                name = Raumcontroller
                visu = yes
                [[[[komfort_Tmp]]]]
                    type = num
                    knx_dpt = 9
                    visu = yes
                    knx_listen = 10/7/15
                    knx_send = 10/7/15
                [[[[soll_Tmp]]]]
                    type = num
                    knx_dpt = 9
                    visu = yes
                    knx_listen = 10/7/8
                    knx_send = 10/7/8
                [[[[ist_Tmp]]]]
                    type = num
                    history = yes
                    visu = yes
                    knx_dpt = 9
                    knx_listen = 10/7/9
                    knx_send = 10/7/9
    ...
    ...
    Ich rufe das Widget auf mit
    HTML-Code:
    {{ myWidgets.widgetName(UG.Buero.RCD) }}
    UG.Buero.RCD ist der RTR im Büro. Das Widget wird einfach mit dem RTR eines beliebigen Raums aufgerufen und soll nun die Objekte des RTR, die es darstellen will, abrufen. Ich könnte natürlich auch alle Objekte einzeln an das Widget übergeben, aber so finde ich es eleganter.

    Geht das? Wenn ja, wie?

    Danke und Gruß
    Peter
Lädt...
X