Schnellnavigation:

Kategorien

« Januar 2018»
S M T W T F S
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

Kopieren Sie diesen Link in Ihren RSS-Reader

RSS 0.91Nachrichten
RSS 2.0Nachrichten

In eigener Sache

Peter Linzenkirchner, Lisardo EDV Beratung in Augsburg. Freelance und Partner für Design- und Webagenturen in Augsburg und München. Pixelgenaue Templates, valides HTML, barrierearm. TYPO3-Projekte, Extension-Programmierung und mehr ... 

Zur Zeit wird gefiltert nach: API
Filter zurücksetzen

Grundsätzlich kann eine Extension als gecachtes USER-Objekt oder als ungecachtes USER_INT-Objekt eingebunden werden. Prinzipiell kann das für jede Extensions sowohl im PHP-Code wie auch über Typoscript bestimmt werden.

Extensions, die gecachet werden sollen

Zunächst erhalten Sie folgenden Eintrag in der ext_localconf.php. Die “1” am Ende steht für aktivierten Cache:

  1. t3lib_extMgm::addPItoST43(
  2.   $_EXTKEY, 'piX/class.tx_myExtension_pi1.php',
  3.   '_pi1', 'list_type',1
  4. );

Zusätzlich muss innerhalb der Extension der cHash aktiviert werden, indem eine Klassenvariable definiert wird:

  1. var$pi_checkCHash=true;

Die Ausgabe des cHash ist nötig, damit für jede Paramter-Kombination ein eigener Cache-Eintrag angelegt wird. Ohne cHash wird jeweils der erste Seitenaufruf für die gesamte Seite gechachet und die weiteren Parameter-Kombinationen ignoriert. Der cHash ist ein Hash-Wert, der aus den Parametern und dem Encryption key des Install-Tools errechnet wird. Er soll verhindern, dass über zufällig aufgerufene Parameter der Cache überflutet wird – was einer DOS-Attacke gleich käme. Nur gültige Parameter erzeugen einen Cache-Eintrag.

Natürlich müssen die Links entsprechend erstellt werden, sinnvollerweise über die TypoLink-Funktionen von TYPO3:

  1. tslib_pibase.pi_linkTP    (
  2.     $str,
  3.     $urlParameters= array(),
  4.     $cache=1,
  5.     $altPageId=0
  6. )

Weitere Beispiel im Artikel Links in Extensions.

Dynamische Extensions ohne Cache

Extensions, die z. B. mit Formularen umgehen oder aktuelle Daten liefern sollen, dürfen nicht gecached werden. Allerdings sollte natürlich trotzdem der Rest der Seite gecachet werden, nur eben rein der Code der Extension nicht. Das kann so erreicht werden:

  1. t3lib_extMgm::addPItoST43(
  2.   $_EXTKEY,'piX/class.tx_myExtension_pi1.php',
  3.   '_pi1','list_type',0);

Damit wird die Extension als USER_INT – also als nicht cachende Extension – eingebunden.

Steuerung über TypoScript

Es ist ohne weiteres möglich, Plugins über Typoscript umzustellen von USER auf USER_INT. Mit 

  1. plugin.tx_myExt_pi1=USER_INT

kann ein Plugin nachträglich von USER auf USER_INT umgestellt werden. Das erlaubt Konstruktionen dieser Art:

  1. [globalVar=TSFE:id=100] 
  2.      plugin.tx_tx_myExt_pi1=USER_INT

Tipp: Diese Einstellung in der main-Function:

  1. functionmain($content,$conf){ 
  2.    $this->pi_USER_INT_obj=1;
  3. }

Wird oft zusätzlich empfohlen, um ein USER_INT-Plugin anzulegen. Meines Wissens schreibt sie auch der Extensions-Manager entsprechend rein. Ich würde das nicht empfehlen, da dadurch der TypoScript-Umschalter natürlich deaktiviert wird und die oben erwähnten Methoden nicht mehr funktionieren.

Steuerung über Flexforms

Das ist nicht so einfach und setzt einen entsprechenden PHP-Code im Plugin selbst voraus. Ausserdem ist es erst ab TYPO3 4.3 möglich. Dieser Code in der main-Function des (USER-)Plugins:

  1. switch ($this->conf['code']){
  2.   case'FORM':
  3.       $this->cObj->convertToUserIntObject();
  4.       $content.='Bin jetzt ein USER_INT-Objekt und cache nicht.';
  5.     break;
  6.     default:
  7.       $content.='Bin ein USER-Objekt und cache. ';
  8.     break;
  9. }

schaltet automatisch bei der Auswahl von FORM in den Flexforms um auf ein USER_INT. Hier ist noch eine andere Variante, welche die USER/USER_INT-Eigenschaften abhängig macht von der TypoScript-Variablen “allowCaching”:

  1. if ($this->cObj->getUserObjectType() ==tslib_cObj::OBJECTTYPE_USER){
  2.   $content.='Ich bin ein USER Objekt.<br>';
  3.   if (!$this->conf['allowCaching']){
  4.       $this->cObj->convertToUserIntObject(); return'';
  5.     }
  6. }else{   
  7.     $content.='Nun bin ich ein USER_INT Objekt<br>';
  8. }

Quelle: USER to USER_INT conversion. Aber Achtung: dort stimmt die Syntax nicht! Meine hier ist richtig.

Ausgabe eines USER_INT-Plugins innerhalb eines USER-Plugins

Machmal besteht die Notwendigkeit, innerhalb einer gecachten Extension eine einzelne Ausgabe ungecached machen zu lassen – z. B. die Ausgabe einer Zeit. Das kann man über ein kleines zusätzliches Plugin lösen, das im eigentlichen Plugin aufgerufen wird:

  1. $content.='Normale, gechachte Ausgabe. <br>';
  2.  
  3. $cObj=t3lib_div::makeInstance('tslib_cObj');
  4. $cObj->start(array());
  5. $conf2=$GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_myExt_pi2.'];
  6. $conf2['includeLibs']='EXT:myExt/pi2/class.tx_test_pi2.php';
  7. // ungecachte Ausgabe aus einem anderen Plugin:
  8. $content.=$cObj->cObjGetSingle('USER_INT',$conf2);
  9.  
  10. $content.='<br> und wieder die gecachte Ausgabe ... ';

Quelle: das Buch “Extension entwickeln” von Dimitry Dupolev, S. 129.

Weiterführende Links

Kategorien: API/Extensions  Kommentare 1
Tags: cache, extension

Die Verarbeitung von Sprachen in Extensions geht in mehreren Schritten vor sich: 

Spracheinstellungen aus config

Zuerst muss die Spracheinstellung (Modus) aus config im Setup ausgelesen werden, am besten in der main()-Funktion oder in einer speziellen init()-Funktion, die aus main() ausgerufen wird:

  1. $this->sys_language_mode=$this->conf['sys_language_mode']?$this->conf['sys_language_mode']:$GLOBALS['TSFE']->sys_language_mode;
  2.  
  3. #####
  4. # Mögliche Werte:
  5. #
  6. # [leer]: Das System fällt in die Standardsprache zurück,
  7. #      wenn keine Übersetzung vorliegt.
  8. #
  9. # "content_fallback": Es wird immer mit der Übersetzung gearbeitet,
  10. #              auch wenn eine Seite nicht übersetzt
  11. #              wurde. Dadurch fallen die Menüs nicht immer
  12. #              auf die Standardsprache zurück.
  13. #
  14. # "strict": Bei fehlenden Übersetzungen wird nichts gezeigt,
  15. #      auch nicht die Standardsprache.
  16. #
  17. #########
  18.  

Der Wert für $this->sys_language_mode wird entweder aus der lokalen Konfiguration der Extension entnommen oder aus den config-Einstellungen im Setup.

Datenbankabfrage

Bereits bei der Datenbankabfrage muss die Sprache berücksichtigt werden, da sich die Übersetzungen in der gleichen Datentabelle befinden wie die Defaultsprache, nur mit einer anderen uid und der uid der Sprachversion im Feld “sys_language_uid”.

  1. $where='pid = '.$pid.' AND sys_language_uid IN (-1,0) '.$this->cObj->enableFields('tt_content');
  2. $res=$GLOBALS['TYPO3_DB']->exec_SELECTquery(
  3.     '*',
  4.     'tt_content',
  5.     $where,
  6.     '',
  7.     '',
  8.     ''
  9. );

Dadurch wird sichergestellt, dass immer nur die Datensätze der Default-Sprache ausgelesen werden, nicht die Übersetzungen. Diese werden im nächsen Schritt geholt.

Language Overlay

Über eine spezielle Abfrage wird die Default-Sprache überschrieben:

  1. while (($row=$GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))){
  2.     // wenn eine andere als die Defaultsprache gewählt wurde
  3.     if ($GLOBALS['TSFE']->sys_language_content){
  4.         // Daten mit Language-Overlay überschreiben
  5.         $row=$GLOBALS['TSFE']->sys_page->getRecordOverlay('tt_content',$row,$GLOBALS['TSFE']->sys_language_content,$this->sys_language_mode=='strict'?'hideNonTranslated':'');
  6.     }
  7. }

Dieser Aufruf bringt die neue Sprache zurück, falls eine vorhanden ist und solange der Modus nicht ‘strict’ lautet. Wenn keine Übersetzung vorhanden ist, wird die Defaultsprache zurückgeliefert, wenn jedoch zusätzlich sys_language_mode = ‘strict’ ist, dann wird ein leeres Array zurückgeliefert.

Bei pages geht es etwas anders:

Der obige Weg muss immer eingeschlagen werden, wenn sich die Sprachversionen in der gleichen Datentabelle befinden, wie üblich in tt_content oder in Extensions. Bei den Seiten ist es allerdings etwas anders, da es hier eine eigene pages_language_overlay-Tabelle gibt. Folglich muss bei der Datenbankabfrage nicht die language_uid berücksichtigt werden, da immer nur die Seite in der Defaultsprache gefunden wird.

Es muss nur im Anschluss an die Abfrage erneut der Language-Overlay aufgerufen werden:

  1. while ($row=$GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)){
  2.     if ($GLOBALS['TSFE']->sys_language_content){
  3.         $row=$GLOBALS['TSFE']->sys_page->getPageOverlay($row);
  4.     }
  5. }

Wie man sieht, funktioniert es etwas anders als bei normalen Content-Elementen. Man erhält mit dieser Funktion den Sprachoverlay der Seite – das heißt, wenn es keine Übersetzung gibt, dann erhält man die Werte der Default-Sprache. Wenn tatsächlich eine Übersetzung in der aktuellen Sprache vorliegt, so enthält die Variable $row nach dem Obverlay noch zwei zusätzliche Arraywerte: _PAGES_OVERLAY=1 sowie _PAGES_OVERLAY_UID mit der uid der übersetzten Seite. Damit kann im Anschluss z. B. entschieden werden, ob die Seite auch »gezählt« werden soll. Will man nur übersetzte Seite ausgeben, so kann man auf die Existenz dieser Felder prüfen. 

Weiterführende Links

 

 

Kategorien: API/Extensions  Kommentare 0
Tags: api, language

In Extensions sollten Links generell nicht hart codiert sondern immer mit den Typo3-Funktionen erstellt werden. Der Grund ist einfach: Werden die Links in PHP direkt kofiert, so greifen die Typolink-Funktionen nicht, ausserdem können zusätzliche Parameter nicht durchgeschleift werden. Es gibt eine große Auswahl an Typo3-Funktionen für die Erstellung von Links:

Einfacher Link auf eine interne Seite:

  1. tslib_pibase.pi_getPageLink (
  2.     $id,
  3.     $target = '',
  4.     $urlParameters = array()
  5. );
  6.  
  7. $test = $this->pi_getPageLink (11,'',($this->prefixId=>array('name'=>'wert')) );
  8. // index.php?id=11&tx;_extension_pi1[name]=wert 
  9.  

Parameter

  • integer: PID der Seite auf die der Link verweisen soll
  • string: HTML-Targetarray: weitere Parameter, als Array:
  • array(‘page’=>5,‘irgendwas’=>‘7’)

Man bekommt eine URL zurück. Um den gesamten Link-Text incl. HTML zu erhalten, kann folgende Funktion verwendet werden:

  1. tslib_pibase.pi_linkToPage  (
  2.     $str,
  3.     $id,
  4.     $target = '',
  5.     $urlParameters = array()
  6. );

Die Parameter sind wie oben, allerdings kommt noch ein String hinzu für den Inhalt, der mit dem Link umgeben werden soll. Rückgabewert ist das komplette HTML für den Link.

Link auf die aktuelle Seite mit Cache-Einstellungen und zus. Parametern

  1. tslib_pibase.pi_linkTP  (
  2.     $str,
  3.     $urlParameters = array(),
  4.     $cache = 0,
  5.     $altPageId = 0
  6. );

Parameter

  • string: Der Linktext
  • array: Array mit zusätzlichen URL-Parametern. Diese Parameter werden in Liste der Parameter in der TypoScript-Property “parent.addParams” und $this->pi_moreParams aufgenommen. Bedeutet, dass sie den $this->prefixId String benötigen.
  • boolean: Mit 1 wird die aufgerufene Seite gecacht (durch Anhängen eines &cHash;-Wertes, vorausgesetzt es handelt sich um ein USER_INT). Mit 0 wird ein no_cache-Parameter an den Link angehängt.
  • integer: PID der Zielseite; wenn das nicht angegeben wird, in das Ziel die aktuelle Seite.

Diese Schreibweise kann also auch für Links auf andere Seiten verwendet werden. Da per Voreinstellung auf die aktuelle Seite verlinkt wird, fehlt auch das target. Rückgabewert ist der komplette Link incl. HTML.

Link zur aktuellen Seite, der aktuell
gesetzte piVars erhält bzw. überschreibt

  1. tslib_pibase.pi_linkTP_keepPIvars (
  2.     $str,
  3.     $overrulePIvars = array(),
  4.     $cache = 0,
  5.     $clearAnyway = 0,
  6.     $altPageId = 0
  7. );

Parameter

  • string: der Linktext
  • array: Array zum Überschreiben (und Ergänzen) der aktuellen piVars. Die Variablen werden automatisch dem piVars-Array hinzugefügt; im Gegensatz zu pi_linkTP sollten die Schlüssel also nicht um $this->prefixId erweitert werden, das parriert automatisch. Werte, die sich in diesem Array befinden, überschreiben vorhandene Einträge in piVars. Wenn der Wert eines Schlüssels leer ist (leerer String), dann wird dieser Wert aus dem piVArs-Array entfernt.
  • boolean: Mit 1 wird die aufgerufene Seite gecacht (durch Anhängen eines &cHash;-Wertes, vorausgesetzt es handelt sich um ein USER_INT). Mit 0 wird ein no_cache-Parameter an den Link angehängt.
  • boolean: Wenn dieser Wert gesetzt wird, so bleibt der Inhalt der piVars nicht erhalten. Praktisch, um piVars zu definieren, ohne auf den prefix zu achten. Insbesondere beim Action-Link von Formularen sinnvoll, sonst bleiben bei wiederholten Formularaufrufen einmal gesetzte Werte von Checkboxen oder Radioboxen erhalten.
  • integer: PID der Zielseite; wenn das nicht angegeben wird, in das Ziel die aktuelle Seite.

Rückgabewert ist der gesamte Link mit den Tags. Um nur die URL zu erhalten, folgende Funktion verwenden:

  1. tslib_pibase.pi_linkTP_keepPIvars_url (
  2.     $overrulePIvars = array(),
  3.     $cache = 0,
  4.     $clearAnyway = 0,
  5.     $altPageId = 0
  6. );

Grundlage: der Typolink

Letzlich rufen die obigen Funktionen nach einigen Manipulationen die folgenden Funktionen auf:

  1. tslib_cObj.typoLink ( $linktxt, $conf ) ;
  2. // oder
  3. tslib_cObj.typoLink_URL ( $conf );

Diese Funktion ermöglicht die Konfiguration und Erweiterung der Links über die Typolink-Optionen von TypoScript. Sie sollte nie übergangen werden.

Links auf Seiten mit Inhalten aus anderen Extensions

Die obigen Techniken finden Anwendung, wenn in einer Extension Links verwendet werden, die wiederum Inhalte der eigenen Extension aufrufen. Oft müssen aber Links eingebaut werden, die Inhalt von fremden Extensions aufrufen und dazu die Parameter der fremden Extension übergeben müssen. Auch diese Links müssen richtig aufgebaut werden und vor allem für das Caching den cHashe-Parameter enthalten.

Hier ist ein Beispiel, wie das aussehen kann:

  1. $url=$this->cObj->typoLink_URL(
  2.     array(
  3.           'parameter'=>29,
  4.           'useCacheHash'=>true,
  5.           'additionalParams'=>'&tx;_ttnews[cat]='.$linkUid
  6.       )
  7. );

Man erkennt ohne Probleme die Syntax des Typolinks darin.

Übergabe-Variablen korrekt abfragen und verarbeiten

Die Globalen GET und POST sollten nie direkt abgefragt werden, sondern immer über die folgenden API-Funktionen. Die Übergabe-Variable “var” kann benutzt werden, um Teile des Arrays abzufragen. Das Beispiel liefert ein Array aller GET-Parameter von tt_news.

  1. # GET abfragen
  2. t3lib_div._GET ( $var = NULL )
  3. # POST
  4. t3lib_div._POST ( $var = NULL )   
  5. # Beides
  6. t3lib_div._GP( $var = NULL) 
  7. # Beispiel
  8. t3lib_div._GET ( 'tx_ttnews' )

Weiterleitungen

Sollten ebenfalls für Typolinks erfolgen; hier z. B. zusätzlich über eine PID aus dem Config-Array:

  1. header('Location:'.t3lib_div::locationHeaderUrl($this->pi_getPageLink($this->conf['pid'])));

Weiterführende Links

Typo3 Dokumentation: Darin suchen nach »tslib_pibase«.
tslib_pibase Class Reference: (Achtung: geht ausserhalb seines Framesets auf).

Kategorien: API/Extensions  Kommentare 0
Tags: links, extension, api
30August2010

GLOBALS TSFE

Über GLOBAL[‘TSFE’] kann man bei der Extension-Programmierung mehr oder weniger auf das gesamte TypoScript-Setup von Typo3 zugreifen. Man kann aktuelle Konfigurationen abfragen oder auch ändern, so dass sich die Ausgabe ins Frontend abhängig vom installierten Plugin auf jeder Seite ändern kann.

Zum Beispiel können damit zusätzliche JavaScript- oder CSS-Definitionen im Kopfbereich ausgegeben werden (siehe CSS und JavaScript im Kopfbereich ausgeben) oder der Bodytag erweitert werden. Folgende Zeile fügt z. B. auf jeder Seite, auf der das Plugin installiert wirde, dem Body-Tag einen onload-Befehl hinzu, wie er für Google-Maps benötigt wird:

  1. $GLOBALS['TSFE']->pSetup['bodyTagAdd']='onload="load()" onunload="GUnload()';

Mit

  1. $GLOBALS['TYPO3_DB']->debugOutput=true;
  2. echot3lib_div::debug($GLOBALS['TSFE']->pSetup);

kann man sich die erste Ebene des $GLOBAL-Arrays ausgeben lassen:

  1. 0  id
  2. 1  type
  3. 2  idParts
  4. 3  cHash
  5. 4  no_cache
  6. 5  rootLine
  7. 6  page
  8. 7  contentPid
  9. 8  sys_page
  10. 9  jumpurl
  11. 10    pageNotFound
  12. 11    domainStartPage
  13. 12    pageAccessFailureHistory
  14. 13    MP
  15. 14    RDCT
  16. 15    page_cache_reg1
  17. 16    siteScript
  18. 17    fe_user
  19. 18    loginUser
  20. 19    gr_list
  21. 20    beUserLogin
  22. 21    workspacePreview
  23. 22    loginAllowedInBranch
  24. 23    ADMCMD_preview_BEUSER_uid
  25. 24    fePreview
  26. 25    showHiddenPage
  27. 26    showHiddenRecords
  28. 27    simUserGroup
  29. 28    TYPO3_CONF_VARS
  30. 29    TCAcachedExtras
  31. 30    tmpl
  32. 31    cacheTimeOutDefault
  33. 32    cacheContentFlag
  34. 33    cacheExpires
  35. 34    isClientCachable
  36. 35    all
  37. 36    sPre
  38. 37    pSetup
  39. 38    newHash
  40. 39    getMethodUrlIdToken
  41. 40    no_CacheBeforePageGen
  42. 41    tempContent
  43. 42    forceTemplateParsing
  44. 43    cHash_array
  45. 44    hash_base
  46. 45    pagesTSconfig
  47. 46    additionalHeaderData
  48. 47    additionalJavaScript
  49. 48    additionalCSS
  50. 49    JSeventFuncCalls
  51. 50    JSCode
  52. 51    JSImgCode
  53. 52    divSection
  54. 53    defaultBodyTag
  55. 54    debug
  56. 55    intTarget
  57. 56    extTarget
  58. 57    MP_defaults
  59. 58    spamProtectEmailAddresses
  60. 59    absRefPrefix
  61. 60    absRefPrefix_force
  62. 61    compensateFieldWidth
  63. 62    lockFilePath
  64. 63    ATagParams
  65. 64    sWordRegEx
  66. 65    sWordList
  67. 66    linkVars
  68. 67    excludeCHashVars
  69. 68    displayEditIcons
  70. 69    displayFieldEditIcons
  71. 70    sys_language_uid
  72. 71    sys_language_mode
  73. 72    sys_language_content
  74. 73    sys_language_contentOL
  75. 74    sys_language_isocode
  76. 75    applicationData
  77. 76    register
  78. 77    registerStack
  79. 78    cObjectDepthCounter
  80. 79    recordRegister
  81. 80    currentRecord
  82. 81    accessKey
  83. 82    imagesOnPage
  84. 83    lastImageInfo
  85. 84    uniqueCounter
  86. 85    uniqueString
  87. 86    indexedDocTitle
  88. 87    altPageTitle
  89. 88    pEncAllowedParamNames
  90. 89    baseUrl
  91. 90    anchorPrefix
  92. 91    cObj
  93. 92    content
  94. 93    clientInfo
  95. 94    scriptParseTime
  96. 95    TCAloaded
  97. 96    csConvObj
  98. 97    defaultCharSet
  99. 98    renderCharset
  100. 99    metaCharset
  101. 100  localeCharset
  102. 101  lang
  103. 102  langSplitIndex
  104. 103  labelsCharset
  105. 104  convCharsetToFrom
  106. 105  LL_labels_cache
  107. 106  LL_files_cache
  108. 107  config
  109. 108  no_cacheBeforePageGen
  110. 109  xhtmlDoctype
  111. 110  xhtmlVersion

Viele der Einträge kommen bekannt vor und man kann sich denken, worum es dabei geht. Wenn man sich für eine Rubrik interessiert, kann man sie sich einzeln ausgeben lassen, z. B. das gesamte config-Setup:

  1. $GLOBALS['TYPO3_DB']->debugOutput=true;
  2. echot3lib_div::debug($GLOBALS['TSFE']->config);

TSFE mit Typoscript auslesen

Man kann über Typoscript alle Werte des TSFE auslesen, hier ein Beispiel mit lastImageInfo:

  1. temp.bildinfo=COA
  2. temp.bildinfo {
  3.   10=IMAGE
  4.   # Das Bild muss existieren!
  5.   10.file=fileadmin/img/bild.jpg
  6.  
  7.   # Bildbreite
  8.   20=TEXT
  9.   20.data=TSFE:lastImageInfo|0
  10.  
  11.   # Höhe
  12.   30=TEXT
  13.   30.data=TSFE:lastImageInfo|1
  14.  
  15.   # Typ 
  16.   40=TEXT
  17.   40.data=TSFE:lastImageInfo|2
  18.  
  19.   # Pfad 
  20.   50=TEXT
  21.   50.data=TSFE:lastImageInfo|3
  22.  
  23.   # Pfad zum Originalbild 
  24.   60=TEXT
  25.   60.data=TSFE:lastImageInfo|origFile
  26.  
  27.   # Datum und Zeit des Uplaods 
  28.   70=TEXT
  29.   70.data=TSFE:lastImageInfo|origFile_mtime
  30. }

Weiterführende Links:

Ein Anwendungsbeispiel wäre die Bildergalerie mit reinem TypoScript von Georg Ringer bei typo3blogger.de

Kategorien: API/Extensions  Kommentare 1
Tags: api, php, extension
30August2010

Extension debuggen

Einige Möglichkeiten, während der Entwicklung einer Extension den Quellcode zu debuggen.

Ein Array ordentlich ausgeben:

  1. $data= array("Name"=>"Hans","Alter"=>40,"Wohnort"=>"Augsburg");
  2. t3lib_div::debug($data);

Wenn es mehrere Debugs sind, kann man sie benennen:

  1. $data= array("Name"=>"Hans","Alter"=>40,"Wohnort"=>"Augsburg");
  2. t3lib_div::debug($data,'Array vorher');
  3.  
  4. $data['Name']='Dampf';
  5. $data['Alter']=32;
  6.  
  7. t3lib_div::debug($data,'Array nachher');

Datenbankabfragen: 

  1. $GLOBALS['TYPO3_DB']->debugOutput=true;

 

 

Kategorien: API/Extensions  Kommentare 0
Tags: extension, php, debug
Besuchen Sie mich auf Google+