Zum Inhalt springen

simple PHP-Funktion funktioniert nicht

Erstellt am 30. Dezember 2004 · 4 Antworten · letzte Antwort am 15. Januar 2005

Tags: PHP, Frage

spawnferkel ·

Hallo,
ich habe das Tutorial "Moderne Template Erstellung Teil1" durchgearbeitet, jetzt wollte ich auf eine PHP-Funktion zurück greifen und es funktioniert einfach nicht. Es wird nicht mal eine Fehlermeldung ausgespuckt, nichts! Und dabei hat es schonmal funktioniert? Sehr seltsam. Hier zum Vergleich einmal der Code aus dem Tut.:

# Default PAGE object:
page = PAGE
page.typeNum = 0
page.includeLibs.some_random_id_string = fileadmin/userfunctions.php
page.config.admPanel = 1
# Content object outputting current page title:
page.10 = HTML
page.10.value = The page ID, {field:uid}, multiplied with 15 is:
page.10.value.insertData = 1
page.10.value.wrap = <b> |</b> <br />
page.20 = USER
page.20.userFunc = user_functions->multiplyTest
page.20.factor = 15

Und jetzt nochmal der Code aus der PHP-Datei:
[edit]Die PHP-Datei ist natürlich die userfunction.php in fileadmin[/edit]

<?php

class user_functions {
	/**
	* Multiplies the current page ID with $conf["factor"]
	*/
	function multiplyTest($content,$conf) {
		$currentPageUid = $GLOBALS['TSFE']->id;
		$factor = intval($conf['factor']);
		return $currentPageUid * $factor;
	}	
}

?>

Weiß jemand Rat? Hattet ihr vielleicht auch schon mal so ein Problem?

Für Hilfe wäre ich sehr dankbar.
Gruß Alexander

spawnferkel ·

Hmm, das funktioniert leider nicht, hätte mich auch gewundert, wo dieses Script genau in der Form doch schon beim durcharbeiten des Tutorials funktioniert hat.

Das einzige was jetzt den Unterschied zu früher ausmacht, sind einige Module, die ich jetzt in einem Sysfolder namens "Template Storage" ausgelagert habe. Aber das kann doch nicht der Grund allen übels sein??!

Folgende Struktur zeigt der Template Analyser:

|--EXT:css_styled_content/static/
|--ts_language_de
|--Menu 1
|--Auto-Parser
|--cObject
|
main

Im Main findet man dann folgendes:

# Default PAGE object:
page = PAGE
page.typeNum = 0
page.includeLibs.some_random_id_string = fileadmin/userfunctions.php
page.config.admPanel = 1
# Content object outputting current page title:
page.10 = HTML
page.10.value = The page ID, {field:uid}, multiplied with 15 is:
page.10.value.insertData = 1
page.10.value.wrap = <b> |</b> <br />
page.20 = USER
page.20.userFunc = user_functions->multiplyTest
page.20.factor = 15

Und wie schon in meinem vorherigen Beitrag erwähnt in der datei fileadmin/userfunction.php steht folgendes:

<?php

class user_functions {
	/**
	* Multiplies the current page ID with $conf["factor"]
	*/
	function multiplyTest($content,$conf) {
		$currentPageUid = $GLOBALS['TSFE']->id;
		$factor = intval($conf['factor']);
		return $currentPageUid * $factor;
	}	
}
?>

Weiß noch jemand Rat? ich bin schier am verzweifeln
Aber danke schonmal für die Lösungsversuche

Gruß
Alexander

JcJensen ·

Hiho,

ich tippe:

page.20.factor = 15

muss zu

page.20.userFunc.factor = 15

mit der php function debug() kann man immer ganz gut gucken was da so ankommt in den funktionen.

z.b.:

<?php 

class user_functions { 
   /** 
   * Multiplies the current page ID with $conf["factor"] 
   */ 
   function multiplyTest($content,$conf) { 

// ich bin eine debugging function :o) 
debug($conf);



      $currentPageUid = $GLOBALS['TSFE']->id; 
      $factor = intval($conf['factor']); 
      return $currentPageUid * $factor; 
   }    
} 
?>

das geht aber nur wenn das debug "angeschaltet" ist. das kann man in der installation machen, da ist ein feld, in dem die IP's eingetragen werden, fuer die das debug zulaessig ist. das einfach mal alles rausnehmen.

grtz

robert.​meyer ·

Hallo,

die Klasse kann bei kleinen "Progrämmchen" hier ruhig weg bleiben, ebenfalls wäre die Anwendung des Objektes USER_INT statt USER gerade zu Entwicklungszwecken angebrachter. Wenn die Klasse weg bleibt und es sich nicht um ein Modul handeln soll, reicht das Objekt PHP_SCRIPT_INT aus:

page.20 = PHP_SCRIPT_INT
page.20.file = fileadmin/multiplyTest.php
page.20.factor = 15

Folgenden PHP-Code in der Datei fileadmin/multiplyTest.php ablegen:

<?php 
   /** 
   * Multiplies the current page ID with $conf["factor"] 
   */ 
   function multiplyTest($content,$conf) { 
      $currentPageUid = $GLOBALS['TSFE']->id; 
      $factor = intval($conf['factor']); 
      return $currentPageUid * $factor; 
   }    
 
?>

Ansonsten: wenn es sich um ein Modul handeln soll, am Besten mit dem Kickstarter anfangen, der eine "fertige" PHP-Klasse für TYPO3 erzeugt. Im oberen Abschnitt Ihrer Klasse fehlen einige benötigte Angaben.