Template Klasse - Rekursiv Pattern

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

  • #46
    evtl. nutzt du

    <!-- array block -->

    statt

    {array name=block}

    dadurch lassen sich die templates besser im browser ansegen.

    Kommentar


    • #47
      "ansegen"?

      Ich kann ja einbauen, dass man das festlegen kann...

      Kommentar


      • #48
        na, ansehen.

        weil mach mal nen block bei deinem um ne tabelle. ergebnis (ungeparst) ist wahrscheinlich etwas unschön.

        Kommentar


        • #49
          Sodele, da bin ich wieder.

          Meine Klasse funktioniert jetzt so ziemlich einwandfrei. Man kann inzwischen selbst festlegen wie start- und end-tag eines Blockes aussehen, standard ist <!-- array name --> xyz <!-- /array -->

          Außerdem werden Platzhalter, denen mehrmals ein Wert zugewiesen wird, aneinandergekettet. (also
          $tpl->assign('main','hallo');
          $tpl->assign('main',' du');
          ergibt "hallo du")

          Jetzt bin ich aber dabei ein script zu entwerfen, was diese Klasse verwenden soll - und schon bemerke ich die ersten Mängel.
          Ich möchte in den script gerne alle Tage einer WOche mit einer Schleife aufzählen, soweit kein Problem, das mit der Block-Funktion der Klasse zu realisieren.

          Dummerweise möchte ich bestimmten Tagen bestimmte Besonderheiten zuweisen, zum Beispiel sollte der Mittwoch anklickbar sein.
          Das kann ich mit meiner Klasse jetzt aber nicht bewerkstelligen, denn die kann ja nur eine Schleife durchlaufen und die jeweiligen Array Elemente ausgeben. Ich könnte natürlich in das array jedesmal <a href="xnxn"> und </a> einspeichern, das ist aber nicht so das wahre, außerdem kann es auch mal mehr als nur ein Link sein, zum Beispiel zusätzlicher Text.

          Am liebsten wäre mir, wenn das ganze wie früher lösbar wäre, (eval()). Da konnte man im Script eine Schleife machen, am Ende der Schleife hat man $var einfach den Inhalt eines Templates zugewiesen und konnte vorher so viel man wollte mit Variablen rumspielen. Jetzt hab ich aber meine Klasse und die soll das auch können, allerdings ohne zusätzliche Dateien zu benötigen, also mit Blöcken.

          Um es nochmal kurz zu fassen: Ich möchte die Möglichkeit haben, Blöcke zu erstellen, deren Inhalt und Variablen die sich innerhalb des Blocks befinden, in einer Schleife im Script Werte bearbeitet werden können.
          Ein Beispiel:
          <!-- array tage -->
          Am {wochentag} gehe ich mit {freund} spazieren.
          <!-- /array -->
          {wochentag} und {freund} sollen jetzt nicht Elemente des arrays "tage" sein, sondern normale Variablen, die aber bei jeder Wiederholung des Blockes andere Werte haben.

          Wäre nett, wenn ihr mir erklären würdet, wie das ganze in anderen Klassen gelöst wurde bzw. ob es überhaupt sinnvoll ist, eine solche Funktion zu haben.

          MfG Oli

          Kommentar


          • #50
            Code:
            <!-- array name --> xyz <!-- /array -->
            enschuldige die zwischenfrage:

            wie sieht denn die regex aus, die bei deiner klasse auch verschachtelte blöcke zulässt?

            Kommentar


            • #51
              Kein Problem.

              So sieht die aus:
              Code:
              °\<\!-- array (.*) --\>(((?R)|(.*))*)\<\!-- /array --\>°isU

              Kommentar


              • #52
                Rekursive Pattern

                Hallo Leute,

                Ich hänge immer noch an meiner Template Klasse (siehe Brainstorming Forum), habe aber eine Frage die allgemein besser hier reinpasst. : )

                Und zwar, wie krieg ich es hin, dass ein rekursiver Aufruf eines Patterns, oder wie auch immer ich das nennen soll, zuerst den innersten Treffer ersetzt, und sich dann nach außen vorarbeitet?

                Wäre toll, wenn mir jemand helfen könnte, weil das viele Probleme lösen würde.

                (Alternativ wäre auch eine Lösung ok, die es mir erlaubt, verschachtelte Blöcke in Templates von Innen nach außen zu ersetzen, aber besser wäre obiges)

                MfG Oli

                Kommentar


                • #53
                  habe ne überlange leitung heute - könntest du vielleicht eine ungefähre struktur als (pseudo)code zeigen? mir würd's leichter fallen, darüber zu denken.

                  Kommentar


                  • #54
                    sodele,

                    erstmal danke für dein Interesse.

                    Wie rekursive Pattern in etwa funktionieren macht derHund in diesem diesem Thread vor.

                    Dummerweise ersetzt dieser Ausdruck von außen nach Innen, sprich so:

                    Code:
                    [bla]
                    	kajshdkjha
                    	sasdalsdhlahsdjhasd
                    	asdajshdkhas
                    	[bla]öhh[/bla]
                    [/bla]
                    ALs erstes ersetzt er jetzt ales zwischen dem ersten [bla] und dem letzten [/bla] und danach sucht er erst nach dem inneren.
                    Ich brauch es aber andersherum, er soll sich von Innen nach Außen vorarbeiten.
                    Warum ich das brauche ist etwas komplizierter, und im Grunde nicht relevant.

                    Mir würde natürlich auch eine Funktion reichen, die das irgendwie macht, aber ich glaube nicht dass sich da eine zwischen schalten kann.

                    MfG Oli

                    Kommentar


                    • #55
                      wie sieht denn dein pattern aus? haste n "?" hinter dem entsprechenden Quantifier?

                      Kommentar


                      • #56
                        Code:
                        °\<\!-- array (.*) --\>(((?R)|(.*))*)\<\!-- /array --\>°isU
                        so sieht der aus und funktioniert auch ziemlich gut.

                        Ehrlich gesagt kenne ich mich mit REGEXP nicht so gut aus, der Ausdruck da oben ist in meienm Thread im Brainstorming Forum entstanden.

                        Deine Quantifier Frage habe ich nicht so wirklich verstanden. Aber da oben ist ja der Pattern.
                        Trifft übrigens auf
                        Code:
                        <!-- array xxx --> askjdhk <!-- /array -->
                        zu

                        Kommentar


                        • #57
                          schon mal das: http://www.php-resource.de/forum/sho...threadid=45908 von derHund gelesen?

                          btw: warum bleibst du nicht im ursprünglichen Thread? ich führe mal zusammen.

                          Kommentar


                          • #58
                            Original geschrieben von asp2php
                            schon mal das: http://www.php-resource.de/forum/sho...threadid=45908 von derHund gelesen?

                            btw: warum bleibst du nicht im ursprünglichen Thread? ich führe mal zusammen.
                            Also derHunds Thread in meiner ersten Antwort sogar verlinkt. Außerdem habe ich ja kein Problem mit dem rekursiven Pattern an sich, ich will ja nur dessen Verhalten ein wenig verändern.

                            Und in den anderen Thread habe ich nicht gepostet, weil das Problem 1. allgemeint verschachtelungen betrifft und ich 2. glaube ich im alten Thread auf Seite 6 nicht mehr so schnell antworten bekommen hätte.
                            Aber danke fürs zusammenführen.

                            Kommentar


                            • #59
                              Original geschrieben von OliOli
                              Also derHunds Thread in meiner ersten Antwort sogar verlinkt.
                              OffTopic:
                              weißt du, wenn ich RegEx sehe, dann bekomme ich Kopfschmerzen, daher lasse ich meist die Fragen danach links liegen, daher ...

                              ich 2. glaube ich im alten Thread auf Seite 6 nicht mehr so schnell antworten bekommen hätte.
                              OffTopic:
                              Nee, wenn das Thema einem interessiert, dann beantwortet er auch, keine Sorge. Außerdem wenn du nachher zum Ziel kommst, und irgendjemand sowas sucht dann muß er nicht enttäuscht sein, weil der Thread mitten drin aufhört

                              Kommentar


                              • #60
                                ja, kein Problem. Dummerweise bin ich so ungeduldig, zumal ich an dieser blöden Klasse schon lange genug sitze.

                                Ich hab schon auto-reload angestellt, für den thread.

                                Kommentar

                                Lädt...
                                X