Zur Boardunity Forenstartseite
  #1  
Alt 24.07.2005, 13:05
MCSEboard.de Mod&Technik
 
Registriert seit: 07.2005
Ort: London (UK)
Beiträge: 6

SMARTY variable im {php} Bereich


Hallo erst mal!

Habe schon einige Zeit hier mitgelesen und muss sagen echt gutes Forum mit sehr vielen nütlichen Tipps!

Ok zu meinem Problem. Ich baue gerade an einer Seite die zwischen SuMa freundlichen und "normalen" Links umschalten kann. Als Template-Engine setze ich SMARTY ein - und hier fängt auch mein Problem an.

Wenn ich nun einen Link innerhalb eines dynamischen Template Bereichs (z. B. in einer smarty foreach-schleife) erzeugen will und dazu meine php function über {php} print url_funktion(); {/php} aufrufe dann kann ich diesem Bereich keine Variable aus der foreach schleife übergeben - zumindest konnte ich nicht rausfinden wie das geht. Kann mir jemand sagen ob das Funktioniert und wenn ja wie.

Ich hoffe die Frage ist verständlich formuliert - ansonsten einfach nachfragen ich versuchs dann nochmal .

Danke
  #2  
Alt 24.07.2005, 13:26
Mitglied
 
Registriert seit: 01.2004
Beiträge: 173
Versuchs mal mit

$smarty->get_template_vars( 'name_der_smarty_variable');


cu

  #3  
Alt 24.07.2005, 13:35
Benutzerbild von exe
exe exe ist offline
titellos
 
Registriert seit: 07.2003
Ort: München
Beiträge: 866
Warum erstellst du deine URL-Funktion nicht einfach als Smarty-Plugin? Dann kannst du sie via {url_funktion} im Template aufrufen und beliebige Parameter (Smarty-Variablen) übergeben.

In deinem PHP-Code bindest du die Funktion via $smarty->register_function('name_im_tpl', 'name_in_php'); ein. Die Funktion bekommt dann bei Aufruf ein Array übergeben in dem alle Parameter stehen.

__________________
Johannes Klose
Calitrix Wiki - Wiki auf Basis von PHP und MySQL
  #4  
Alt 24.07.2005, 14:37
MCSEboard.de Mod&Technik
 
Registriert seit: 07.2005
Ort: London (UK)
Beiträge: 6
Zitat:
Zitat von exe
Warum erstellst du deine URL-Funktion nicht einfach als Smarty-Plugin? Dann kannst du sie via {url_funktion} im Template aufrufen und beliebige Parameter (Smarty-Variablen) übergeben.

In deinem PHP-Code bindest du die Funktion via $smarty->register_function('name_im_tpl', 'name_in_php'); ein. Die Funktion bekommt dann bei Aufruf ein Array übergeben in dem alle Parameter stehen.
Das hört sich sehr gut an - werde gleich mal auf der Smarty Seite danach suchen. Geht das auch mit Klassen? Die URL Funktion war nämlich nur ne Hilfsfunktion die ihrerseits auf meine url klasse zugegriffen hat... naja steht bestimmt im manual! Danke für den Tipp!!!

Gruß

  #5  
Alt 24.07.2005, 15:42
MCSEboard.de Mod&Technik
 
Registriert seit: 07.2005
Ort: London (UK)
Beiträge: 6
Hi,

ok die Beschreibung sieht ganz gut aus - aber ich mache wohl etwas bei der Umsetzung falsch. Sieht jemand bei nachfolgender Umsetzung einen Fehler? SMARTY schon:
Zitat:
(...)syntax error: custom function 'genURL' is not implemented (Smarty_Compiler.class.php, line 794) (...)
Wenn ich die Seite jedoch neu lade ist der Fehler weg und kommt erst wieder wenn ich das makefile erneut starte und damit den smarty cache neu schreibe...

So sieht meine Umsetzung aus:

in der php-Datei:
Code:
require_once("class_manageURL.inc.php");
$manURL = NEW manageURL;
$smarty->register_function("genURL", array(&$manURL, $smarty_genURL));
die function der Klasse manageURL:
Code:
function smarty_genURL($params, &$smarty) {
   return $this->genURL($params['section'], $params['paramString'], $params['anker']);
 }
im Template:
Code:
{genURL section="home" paramString="" anker=""}
Vielen Dank für eure Hilfe!

  #6  
Alt 24.07.2005, 18:25
Benutzerbild von exe
exe exe ist offline
titellos
 
Registriert seit: 07.2003
Ort: München
Beiträge: 866
Zitat:
Zitat von Dr.Schmidt
$smarty->register_function("genURL", array(&$manURL, $smarty_genURL));
Enthält $smarty_genURL den Name der Funktion ("smarty_genURL")?

Code:
$smarty->register_function("genURL", array(&$manURL, "smarty_genURL"));
So sollte es funktionieren, ich verwende es auch auf diese Art.

__________________
Johannes Klose
Calitrix Wiki - Wiki auf Basis von PHP und MySQL
  #7  
Alt 25.07.2005, 09:47
MCSEboard.de Mod&Technik
 
Registriert seit: 07.2005
Ort: London (UK)
Beiträge: 6
Zitat:
Zitat von exe
Enthält $smarty_genURL den Name der Funktion ("smarty_genURL")?

Code:
$smarty->register_function("genURL", array(&$manURL, "smarty_genURL"));
So sollte es funktionieren, ich verwende es auch auf diese Art.
Wenn mans richtig macht gehts sogar! :-) Darauf hätte ich auch selber kommen können. An der Stelle ist die SMARTY Doku aber etwas Verbesserungswürdig - mal sehen ob man sich da einbringen kann um Verbesserungen zu schreiben...

Vielen Dank nochmal für die schnelle und kompetente hilfe!

Antwort


Stichworte
-

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Gutes php Wiki Daniel Richter Blog, CMS, Wiki und Sonstige 21 13.12.2009 11:56
Leseempfehlung: PHP Magazin MrNase Boardunity-Talk 14 23.07.2005 20:40
Interesse an einem Board, das auf Smarty setzt?! phil Forensoftware 10 17.07.2004 18:09
Zend's PHP 5 Programmierwettbewerb... Fabchan Programmierung und Datenbanken 9 14.07.2004 21:37
Das PHP Forum 4 all ShadowByte Projektvorstellung und Bewertung 4 22.06.2003 20:12






1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24