smarty + javascript + php verbinden

südpol

Erfahrenes Mitglied
Hi,

bei dem Thema viel mir die Wahl des richtigen Forums mal richtig schwer...

Ich habe eine php Seite welche zur Darstellung smarty als template engine verwendet. In diesem Template habe ich ein Formular welches via Javascript auf Fehler geprüft wird. Mein Problem an der Sache ist, dass meine Seite vie gettext in einige sprachen übersetzt wird. Gibt es nun eine Möglichkeit innerhalb meines Javascripts welches im Template aufgerufen wird die php Funktoin gettext aufzurufen welche mir meine Fehlermeldungen übersetzen kann? (für den Fall, dass es wichig sein sollte, die javascript Dateien werden includet).

Bin für jeden Tipp dankebar!
 
Ok ein Ansatz habe ich jetzt mal noch getestet.

Ich habe die JS Datei komplett in den head geschrieben (durch {literal} umschlossen) und habe nur die Textbausteine wie folgt "geöffnet"

Code:
...
{/literal} {php} print _("TEXTBAUSTEIN"); {/php} {literal} 
...

So funktioniert das ganze :) Da ich jedoch eine zentrale head Datei habe wollte ich meine Javascript files nun einfach in eine Variable einlesen und diese danach varibabel im Head plazieren ( so könnte ich über meine jsadd Klasse auch mehrere Funktionen hinzufügen) ach ja, die Klasse sieht so aus:

Code:
<?php
// $Id$

/**
 * This class provides loading a file
 * @package xxx
 * @author xx
 */

class loadFile {
  var $file = "";

  function loadFile() {
    // constructor -> not used at the moment
  }

  function addFile($filePath) {
    $fp = fopen($filePath, "r"); // open file
    $this->file .= fread($fp,filesize($filePath)); // read file
    fclose($fp);  // close file
  }

  function returnFile() {
    return $this->file;
  }

}

?>

Ich rufe also diese Klasse in meine php file auf und gebe den output von returnFile mit smarty->assign an das Template. Dort füge ich diesen Teil dann hin den head ein.

Code:
<script type="text/javascript">
  {$script}
</script>

Das Problem ist nun, dass ich in dem über die Klasse includeten File die smarty Tags {literal} verwende. Ich hätte nun erwartet, dass smarty diese auf die og. Art includeten files interpretiert - Das ist leider eine Fehlannahme gewesen.

Hat jemand eine Erklärung dafür oder einen Tipp wie man es besser machen kann?

(Sorry für den langen Text :) )
 
hmm ok,

einen quick hack habe ich schon mal. Ich include die js Datei nun einfach über den smarty include befehl {include file=""} dadurch geht zwar die Möglichkeit verlohren beliebig viele Javascript Dateien zu includen aber darauf werde ich wohl bis zur Lösung des o.g. Problemes warten müssen :rolleyes:

Gruß
 
Zurück