Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Zugriff auf child-Objekte eines Objekts

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

    - √ - 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

    #2
    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.

    Kommentar


      #3
      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

      Kommentar


        #4
        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.

        Kommentar


          #5
          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
          Join smartVISU on facebook. Web: smartvisu.de.
          Dir gefällt smartVISU? Bitte spenden für die Weiterentwicklung.

          Kommentar


            #6
            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

            Kommentar


              #7
              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
              Join smartVISU on facebook. Web: smartvisu.de.
              Dir gefällt smartVISU? Bitte spenden für die Weiterentwicklung.

              Kommentar


                #8
                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

                Kommentar


                  #9
                  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
                  Join smartVISU on facebook. Web: smartvisu.de.
                  Dir gefällt smartVISU? Bitte spenden für die Weiterentwicklung.

                  Kommentar


                    #10
                    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

                    Kommentar


                      #11
                      Hallo Peter,

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

                      Bis bald

                      Marcus

                      Kommentar


                        #12
                        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

                        Kommentar

                        Lädt...
                        X