Rolf B: Rolf B's Lösung

Beitrag lesen

Hallo pl,

wenn ich eine Template-Engine hätte, die im Stande ist, JS in HTML zu erkennen und erforderliche Kontextbehandlungen transparent durchzuführen, dann hätte ich das sicherlich damit gemacht.

Hab ich aber nicht; es gibt da so ein Smarty-basierendes Projekt, an dem ich gelegentlich mit bastele (aber wer dessen Innereien betrachtet bekommt Schreikrämpfe, weshalb ich das NICHT als Referenz angebe), da geht das mit etwas Tipparbeit semitransparent. Smarty kennt Modifier hinter Template-Variablen. Entweder eingebaute, z.B. escape für HTML-Escaping, oder wenn's kein eingebauter ist, sucht er eine eingebaute PHP-Funktion dieses Namens (was ich für grenzwertiges Design halte, aber hier schön praktisch ist).

Mit Smarty würde ich also einfach

<script>
   var ROLF.jsData = {$jsData|json_encode};
</script>

in mein Template schreiben. PHP sieht so aus:

$smarty = CreateSmarty();   // Projektspezifsicher Helper mit Smarty-Setup;
$smarty->assign('jsData', ['foo' => 3, 'bar' => "hugo" ]);
$smarty->display('myPage.tpl');

$jsData wäre dann die Template-Variable, wo mein Parameter-Objekt drin ist. Die bestücke ich aus PHP heraus mit einem Skalar oder Objekt, ohne zu wissen wie sie zu rendern ist. Prima. Und mein statisches JS würde ROLF.jsData verwenden können. Auch prima. Das Know-How, wie der Kontextwechsel zu laufen hat, steckt im Smarty-Template. Kann dein FW das auch so schön transparent?

Ohne TE - na gut, dann echo't man den json_encode raus oder baut ihn mit <?= ?> ein.

Also - lieber Namenskollege - wir sind uns ja durchaus einig. Bis auf ein paar technische Details, die mit der Frage nichts zu tun hatten...

Rolf

--
sumpsi - posui - clusi
0 92

Variable von PHP nach JAVASCRIPT übergeben

Marti
  • javascript
  • php
  1. 1
    beatovich
    1. 2
      Matti Mäkitalo
      1. 0
        beatovich
        1. -1

          Arrays und Hashes (Perl oder PHP) in <script> als JS-Object erzeugen

          beatovich
          • javascript
          • perl
          • php
          1. 0
            pl
            • javascript
            • perl
            1. 0
              beatovich
              1. 0
                pl
                1. 0
                  Rolf B
                  1. 0
                    pl
                    1. 0
                      Rolf B
                      1. 0
                        pl
                        1. 0
                          Rolf B
                          1. 0
                            pl
                            1. 0
                              Rolf B
                  2. 0

                    Rolf B's Lösung

                    pl
                    1. 2
                      Rolf B
                      1. 0
                        pl
                        1. 0
                          beatovich
                        2. 0
                          Rolf B
                          1. 0
                            beatovich
                            1. 1
                              Matti Mäkitalo
                              1. 0
                                beatovich
                                1. 1
                                  Matti Mäkitalo
                                  1. 0
                                    beatovich
                                    1. 1
                                      Matti Mäkitalo
                                      1. 0
                                        Matti Mäkitalo
                                      2. 0
                                        beatovich
                                        1. 0
                                          1unitedpower
                                          1. 0
                                            dedlfix
                                            1. 0
                                              1unitedpower
                                          2. 0
                                            beatovich
                                            1. 0
                                              beatovich
                                              1. 0
                                                beatovich
                                                1. 0
                                                  1unitedpower
                                                  1. 0
                                                    beatovich
                                                2. 0
                                                  pl
                                                  1. 0
                                                    beatovich
                                                    1. 0
                                                      pl
                              2. 0
                                Rolf B
                                1. 0
                                  dedlfix
                                  1. 0
                                    Rolf B
                                2. 0
                                  pl
                                  1. 0
                                    1unitedpower
                                    1. 0
                                      pl
                          2. 0
                            pl
                            1. 0
                              beatovich
                              1. 0
                                pl
                                1. 0
                                  beatovich
                                  1. 0
                                    pl
                                    1. 0
                                      beatovich
                                      1. 0
                                        pl
                                        1. 0
                                          1unitedpower
                                          1. 0
                                            Rolf B
                                            1. 0
                                              pl
        2. 2
          Matti Mäkitalo
    2. 0
      pl
      1. 0
        dedlfix
        1. 0
          pl
          1. 0
            dedlfix
            1. 0
              pl
              • sonstiges
      2. 0
        beatovich
        1. 0
          pl
  2. 0
    TS
  3. 0
    pl
    1. 1
      klawischnigg
      1. 0
        pl
        1. 0
          Rolf B
          1. 0
            pl
            1. 0
              Rolf B
              1. 0
                pl
                1. 0
                  pl
                  • javascript
                  • perl
                2. 0
                  Rolf B
                  1. 0

                    JSONP, CORS

                    pl
            2. 0
              dedlfix
              1. 0
                beatovich
                1. 0
                  pl
                  1. 0
                    beatovich
                    1. 0
                      pl
                      1. 0
                        beatovich
                        1. 0
                          pl
                          1. 0
                            beatovich
                            1. 0
                              pl
                              • perl
        2. 0
          klawischnigg
          1. 0
            pl
  4. 0
    Auge
  5. 0
    klawischnigg
    1. 0
      beatovich
    2. 0
      pl
    3. 0
      dedlfix
  6. 0
    pl
    • javascript
    • programmiertechnik
    1. 0
      pl