Seit irgendeinem update nach version 2.2 gibt es auf einmal keinerlei smarty template vars. früher lieferte PHP: print_r ($this->get_template_vars()); sämtliche smarty template variablen. analog in smarty lieferte z.b. $smarty.session.customers_status.customers_status_id die id der kundengruppe. jetzt ist nicht mehr abrufbar, auf keine mir bekannte weise. Liebe Gambios! Das sind für das Templateing essentiell wichtige Techniken. Geht das nicht, wird Gambio absolut unmodifizierbar. Wie komme ich jetzt an die Template Variablen? {debug} bringt mir nichts, auch hier wurden anscheinend massig smarty variablen gelöscht mit einem der letzten updates.
Wir haben nichts weggelöscht. Wir haben nur auf Smarty 3 aktualisiert. Da hat sich die Syntax geändert. Schau dir am besten die offizielle Dokumentation an.
servus moritz, hab ich gemacht, lange und immerwieder. alles folgende und zahlreiches weitere bringt überhaupt nichts: $smarty->getTemplateVars(); Call to a member function getTemplateVars() on a non-object $this->Smarty->getTemplateVars Using $this when not in object context eingebaut mittels {php}{/php} in prdouktinfotemplate standard.html unter eyecandy.
Da sind wir am Kern des Problems: Smarty3 und PHP-Tags mögen einander nicht. Den PHP Code musst du auslagern.
Doch, die mögen sich immer noch... Halt nur anders. Code: $template->getTemplateVars() sollte funktionieren.... Zuständig in Smarty für die Einbindung von PHP-Tags ist diese Funktion in "includes\classes\Smarty\SmartyBC.class.php": Code: function smarty_php_tag($params, $content, $template, &$repeat) { eval($content); return ''; }
SmartyBC kann man nutzen, BC steht dabei ja für Backwards Compatibility, die Rückwärts-Kompatibilität, den Noch-Workaround. Der Weg in die Zukunft so wie sich das die Smarty Entwickler vorstellen ist das also nicht. Auslagern wäre der bessere Weg.
"SmartyBC kann man nutzen," SmartyBC wird von Gambio genutzt, da das Smarty-Objekt davon "extended" wird! "Auslagern" zieht auch einen Rattenschwanz von Problemen (zu erstellende Overloads) nach sich, auch für kleine Dinge, die man sonst mal eben so machen kann... Man sollte auch die Leute im Auge haben, die nicht nur mit Gambio Standard unterwegs sind.
Es ist eine einfach Kosten-Nutzen-Rechnung. Es kann durchaus sinnvoll sein, eine schnelle Smarty-PHP-Lösung zu wählen. Vieles kann man auch über eigene Smarty-Funktionen oder -Modifier lösen, was die Übersichtlichkeit steigern kann. Es kommt immer auf das konkrete Vorhaben an. Man sollte immer die Wartbarkeit im Blick haben und Lösungen wählen, die einen Externen nicht in den Wahnsinn treiben .
@Moritz (Gambio) *off-topic* PHP-Storm unterstützt Smarty Syntaxhervorhebung nur(?) bei .tpl Datei. In den ganzen .html Dateien werden bei mir (auch verständlich) nur der HTML Syntax hervorgehoben. Der ganze Smartypart wird nicht hervorgehoben. Hast du einen Tipp für mich, wie ich PHP Storm beibringen kann, dass auch unter .html sich Smarty Code verstecken kann?
Genau aus diesem Grunde ziehe ich eine solche Lösung vor (bei überschaubaren Problem'schen), weil ich dann nicht erst lange nach einem Overload suchen muss, das die Daten bereit stellt, sondern alles im Kontext parat habe...
@Avenger: ja, rein smarty geht - in manchen templatedateien, nicht mehr in allen wie früher. aber ich brauche immer wieder quick and dirty smarty vars -> php. bekommt das irgendeiner hin unter smarty3 ?