Untermenü

TYPO3 Chat hosted by kj187kj.

Join now


Chat about what's on your mind. More about public chats.

Sunsite SourceForge.net

Statistik
Tutorials Gesamt:
56
Tutorials Hidden:
1
Kommentare:
563

Bücher zum Thema

Links / Friends
» typo3.org
» T3N Magazin
» CSS Tutorials
» TYPO3 SEO
» TYPO3 Blog



 

eID Mechanismus


Tutorial abonnieren:
Author:
Julian Kleinhans
Author E-Mail:
Eingetragen:
24.10.2007 - 10:52

Quelle:
Keine Quelle vorhanden
Klicks:
504




eID steht für Extension ID
Der eID Mechanismus ist der seit der Version 4.x dabei und kann als alternative Rendering Engine betrachtet werden.

Angesprochen wird er über einen GET oder POST Parameter. Sobalt eID als Parameter in der URL vorhanden ist (zB. www.domain.de/?eID=schuesselwort) wird der normaler Rendering Prozess sehr früh abgebrochen und auf ein Script weitergeleitet was wir selber programmieren müssen. Da der normale Rendering Prozess so früh abgebrochen wird kommt es auch noch zu keiner Ausgabe. Es wird nichts gecachet und kein HeaderCode ect generiert. Der eID Mechanismus kann also super im Zusammenhang mit AJAX verwendet werden.

Wollen wir uns einmal die index_ts.php (typo3/sysext/cms/tslib/) Zeile 127 bis 136 ansehen.

0:   <?php
// *********************
// Look for extension ID which will launch alternative output engine
// *********************
if ($temp_extId t3lib_div::_GP('eID'))    {
    if (
$classPath t3lib_div::getFileAbsFileName($TYPO3_CONF_VARS['FE']['eID_include'][$temp_extId]))    {
        require_once(
PATH_tslib.'class.tslib_eidtools.php');
        require(
$classPath);
    }
    exit;
}
?>
1:  
2:  
3:  
4:  
5:  
6:  
7:  
8:  
9:  
10:  
11:  
Hier koennen Sie sich den Quellcode kopieren.


Hier wird überprüft ob der Schlüssel eID als Get/Post Variable vorhanden ist und falls ja, wird der normale Renderingprozess abgebrochen und auf unser Script verwiesen. Doch woher weiss TYPO3 jetzt wo unser Script liegt ?

Das sagen wir Ihm über $TYPO3_CONF_VARS['FE']['eID_include'][$temp_extId].
Wir müssten entweder in die localconf.php oder in eine ext_localconf.php einer Extension folgendes Eintragen

0:   <?php
$TYPO3_CONF_VARS
['FE']['eID_include']['schluesselwort'] = 'EXT:meinExtKey/meinScript.php';
?>
1:  
2:  
Hier koennen Sie sich den Quellcode kopieren.


Steht jetzt also in der Adresse www.domain.de/?eID=schluesselwort geht er in die erste if Abfrage und sieht das $TYPO3_CONF_VARS['FE']['eID_include'][$temp_extId] vorhanden ist und speichert 'EXT:meinExtKey/meinScript.php' in die Variable $classPath. Danach includiert er die Klasse eidtools und unsere eigene.

Da unser Script noch leer ist bekommen wir eine weisse Seite angezeigt in der auch der komplette Quelltext leer ist.

Um in unserem Script nun ein FEUSER Objekt zu haben und eine aktive DB Verbindung schreiben wir

0:   <?php
$feUserObj 
tslib_eidtools::initFeUser(); // Initialize FE user object        
tslib_eidtools::connectDB(); //Connect to database
// ...
// ...
?>
1:  
2:  
3:  
4:  
5:  
Hier koennen Sie sich den Quellcode kopieren.


Die erste Zeile initialisert den FrontentUser und gibt uns diesen als Objekt zurück.
Die 2te Zeile stellt eine Verbindung zur Datenbank her.
Im Weiteren können wir ganz normal auch TYPO3 Funktionalitäten benutzen und unseren eigenen Renderingablauf schreiben.

Achja, um auch zB auf alle piBase Funktionen zurückzugreufen können wir uns ganz einfach eine Klasse erstellen die von dieser Erbt

0:   <?php
require_once(PATH_tslib.'class.tslib_pibase.php');

class 
unsereKlasse extends tslib_pibase {
  function 
main(){
    
$feUserObj tslib_eidtools::initFeUser(); // Initialize FE user object        
    
tslib_eidtools::connectDB(); //Connect to database
    // ...
  
}
}

$output t3lib_div::makeInstance('unsereKlasse');
$output->main();
?>
1:  
2:  
3:  
4:  
5:  
6:  
7:  
8:  
9:  
10:  
11:  
12:  
13:  
Hier koennen Sie sich den Quellcode kopieren.


Das war es soweit, wenn Ihr noch fragen dazu habt stellt Sie einfach über die Kommentarfunktion.





Ergebnis: Kein Ergebnis vorhanden



Zum Eingabeformular

 
christoph 07.08.2008 12:03 Uhr 

@Daschmi:

Du musst das cObj erst initialisieren.
Das geht über:

0:   <?php

$this
->cObj t3lib_div::makeInstance('tslib_cObj');

?>
1:  
2:  
3:  
4:  
Hier koennen Sie sich den Quellcode kopieren.
 
 
 
Daschmi 13.07.2008 18:57 Uhr 

Hi,

Erst mal danke für das gute Tutorial, es funktioniert auch soweit. Ich hab nur noch ein kleines Problem mit dem instanzieren meiner Klasse.

Meine Klasse erbt von tslib_pibase, ich kann aber das cObj nicht nutzen. Es kommt immer der Fehler das ich eine Funktion auf einer Variable anwenden will die kein Objekt ist.

Grüße

Daschmi
 
 
 
Daschmi 13.07.2008 18:51 Uhr 

Hi,

Erst mal danke für das gute Tutorial, es funktioniert auch soweit. Ich hab nur noch ein kleines Problem mit dem instanzieren meiner Klasse.

Meine Klasse erbt von tslib_pibase, ich kann aber das cObj nicht nutzen. Es kommt immer der Fehler das ich eine Funktion auf einer Variable anwenden will die kein Objekt ist.

Grüße

Daschmi
 
 
 
Heik 09.07.2008 10:22 Uhr 


$this->pi_getLL('labelName');

sollte funktionieren, wenn du die eID Logik in eine KLasse gekapselt hast, die von der tslib_pibase abgeleitet ist.

Bzw könntest du wohl auch die PluginKlasse selbst ableiten (die ist ja sowieso auch schon eine Ableitung der pibase)


Gutes Tut! Werde das heute abend mal austesten ;)
 
 
 
Daniel 29.06.2008 14:09 Uhr 

Hallo Julian, danke für dein hilfreiches Tutorial.
 
 
 
Sven 29.01.2008 17:32 Uhr 

Tolle Anleitung, danke! :)
 
 
 
Andy 29.01.2008 09:55 Uhr 

Es ist meist ziemlich sinnvoll folgende Zeilen am Anfang jeder eID zu inkludieren:

<?php
// Exit, if script is called directly (must be included via eID in index_ts.php)
if (!defined ('PATH_typo3conf')) die ('Could not access this script directly!');

// eID-COde
...
?>

Diese Zeilen stellen sicher, dass das eID nicht direkt aufgerufen wird, sondern aus dem Typo.

Bis denne
 
 
 
tribun 16.11.2007 12:40 Uhr 

Hallo und Danke für den Tipp.
Wie kann man denn in der Klasse auf die pi_getLL()-Variablen eines Plugins zugreifen? Wäre sehr nützlich für lokalisierte AJAX-Anwendungen.

Gruß
tribun
 
 
 
Seite: 1