[TYPO3-german] eigene kleine PHP Datei in eigener Extension

Stephan Schuler Stephan.Schuler at netlogix.de
Fri Jun 24 20:12:56 CEST 2011


Hallo Harald.


Ich sehe bei dir zwei Probleme, wobei das eine dich daran hindert, das zweite
zu erkennen.

Grundsätzlich ist es in den meißten Fällen Quatsch, "eine PHP-Datei" ausführen
zu wollen wenn man im TYPO3-Kontext arbeitet. Natürlich *kann* ich eine
beliebige PHP-Datei die irgend wo in den Tiefen der TYPO3-Installation
vergraben liegt unmittelbar aufrufen. Technisch hindert mich niemand daran.
Nur ist das Ergebnis eben nicht das gewünschte bzw. der dafür notwendige
Aufwand schnell um ein Vielfaches höher als die passenden TYPO3-Mittel
dazu zu verwenden.


Deine Fehlermeldung ist eigentlich sehr aussagekräftig. Jedenfalls sollte sie
dich nachdemklich machen, warum das von dir geschriebene nicht funktioniert.

Laut Fehlermeldung existiert die folgende Datei nicht: "'PATH_tslibclass.tslib_pibase.php".

Aber: Die hast du nicht eingebunden. Du bindest 'PATH_tslib."class.tslib_pibase.php"
ein. Der Grund dafür (durch "echo" und "die" kannst du dich in Plain-PHP
an das Problem rantasten, im TYPO3-Kontext würdest du "t3lib_div::debug"
bzw. seit 4.5 "t3lib_utility_Debug::debug" zum Debuggen nutzen) ist, dass deine
Konstante PATH_tslib nicht definiert ist und PHP deshalb implizit davon ausgeht,
dass du den String "PATH_tslib" meinst. Das ist natürlich falsch, in Wirklichkeit
fehlt die hier eben die Konstante.

Das ist das erste Problem: Du deutest die PHP-Meldung falsch (bzw. eher gar
nicht).


Jetzt kommt der Punkt mit dem "nachdenklich".

Stephan hat gerade geschrieben, dass du an "TYPO3 vorbei programmierst".
Das ist der häufigste Fall wenn jemand versucht, eine PHP-Datei über den Browser
aufzurufen. Dabei sieht man im Quellcode dann ganz häufig "echo" von HTML-
Code sowie $_SESSION, $_GET und $_POST.
Das tust du allerdings explizit nicht. Du begehst einen Fehler im anderen Extrem:
Du verwendest TYPO3-Mittel, ohne TYPO3 vorher gestartet zu haben.

Woher soll dein PHP-Prozess die Konstante denn kennen?
Wenn du jetzt anfängst, die Konstante des PATH_tslib (richtig) zu konfigurieren
(sodass die Datei ohne Fehlermeldung geladen wird) wirst du sehr schnell
auf das nächste Problem stoßen: Du hast in einer selbstgestrickten PHP-Datei
weder (die vollständige TYPO3-) Session noch eine Datenbankverbindung.
Das alles kann man sich natürlich von Hand dazu schrauben, nur wäre das
alles andere als elegant.


Grundsätzlich kann man sagen, dass man nie (Ausnahmslos!) Dateien
schreibt die anschließend über den Webserver aufgerufen werden.


Wobei du dir zur Verwendung von eID vorher genau anschauen solltest,
ob das überhaupt das ist was dich langfristig glücklich macht. Für AJAX ist
eID zunächst toll, weil es wahnsinnig schnell ist. Aber die Geschwindigkeit
hat einen ganz bestimmten Grund: Es fehlt eben eine ganze Menge TYPO3
drum herum.

Das normale Seitenrendering bezieht sich auf eine Seite im TYPO3-
Seitenbaum. Heißt es wird die Seite geladen und die Rootline, sprich
alle Seiten auf dem Weg vom Rootobjekt bis zur Seite. Dazu noch
das auf der Seite gültige Typoscript (das natürlich von der zugehörigen
Hierarchie abhängt) und anschließend alle Inhaltselemente auf dieser
Seite.
eID kennt dagegen zunächst keine Seiten, folglich auch kein Typoscript.

Das führt zu nicht ganz geringenen Nachteilen.

Die Konfiguraiton eines eID-Moduls ist nur sehr eingeschränkt
komfortabel, weil dir eben kein Typoscript zur Verfügung steht. Wenn
du doch Typoscript verwenden möchtest (und das möchtest du
eigentlich wo du gehst und stehst)  musst du dir einen Weg ausenken,
wie du entweder das Typoscript durch die Session leitest oder du
instanziierst im eID-Script ein tslib_fe mit allem was dazu gehört.

Dass eID keine Seiten kennt führt weiterhin dazu, dass es nur
begrenzt an unterschiedlichen Stellen unterschiedlich verwendet
werden kann. Ein Plugin kann ich auf mehreren Seiten einbinden
und via Typoscript pro Seite ein anderes Template hinterlegen. Bei
eID muss ich mir einen anderen Weg ausdenken wie ich ein eID-
Script dazu bekomme, bei unterschiedlichen Aufrufen unterschiedliche
Ausgaben zu produzieren.

Ich will hier keinesfalls eID schlechtreden. Kay hat natürlich vollkommen
Recht wenn er dir hier eID ans Herz legt. Nur sollte man sich meiner
Meinung nach schon ein wenig mit TYPO3 auskennen bevor man sich
an eID wagt. Dass eID deutlich weniger dokumentiert ist als die
Programmierung von Plugins ist der eine Grund, dass es eben völlig
anders funktioniert der andere.


Gruß,


Stephan Schuler
Web-Entwickler

Telefon: +49 (911) 539909 - 0
E-Mail: Stephan.Schuler at netlogix.de
Website: media.netlogix.de


--
netlogix GmbH & Co. KG
IT-Services | IT-Training | Media
Andernacher Straße 53 | 90411 Nürnberg
Telefon: +49 (911) 539909 - 0 | Fax: +49 (911) 539909 - 99
E-Mail: info at netlogix.de | Internet: http://www.netlogix.de

netlogix GmbH & Co. KG ist eingetragen am Amtsgericht Nürnberg (HRA 13338)
Persönlich haftende Gesellschafterin: netlogix Verwaltungs GmbH (HRB 20634)
Umsatzsteuer-Identifikationsnummer: DE 233472254
Geschäftsführer: Stefan Buchta, Matthias Schmidt



________________________________________
Von: typo3-german-bounces at lists.typo3.org [typo3-german-bounces at lists.typo3.org]" im Auftrag von "Kay Strobach [typo3 at kay-strobach.de]
Gesendet: Freitag, 24. Juni 2011 19:32
Bis: typo3-german at lists.typo3.org
Betreff: Re: [TYPO3-german] eigene kleine PHP Datei in eigener Extension

Hi Harald,

bei eid scripten sind nicht alle funktionen für pibase aktiviert.
Wenn du wirklich pibase nutzen willst, kommst du um TS und einen anderen
pagetype nicht herum.

[0] http://www.typo3-tutorials.org/tutorials/extensions/eid-mechanismus.html
[1] http://www.sk-typo3.de/Ajax-mit-prototype-und-eID.328.0.html
[3] http://jimsuperfly.de/blog/typo3-eid-ajax/
[4]
http://lists.typo3.org/pipermail/typo3-project-timtab/2010-August/000553.html
[5] http://www.typo3.net/forum/beitraege/thema/93256/

Hoffe die links helfen dir.
Leider ist im Wiki derzeit kein tutorial zu eid und typenum :(

Grüße
Kay

Am 24.06.2011 19:25, schrieb Harald Keller:
> Stimmt das AJAX ist ja auch ok, der Request wird perfekt abgesetzt etc,
> nur was muss ich tun damit eine PHP Datei in einer Extension funktioniert.
>
> Oder anders gefragt warum kann ich eine PHP Datei in meiner Extension nicht
> ausführen gibt es einen Grund dafür?
>
> gruess
> Harald
>
> "Kay Strobach" <typo3 at kay-strobach.de> schrieb im Newsbeitrag
> news:mailman.1.1308935768.10116.typo3-german at lists.typo3.org...
>> hi in typo3 ist das zauberwort für ajax eid ;)
>>
>> Grüße
>> Kay
>>
>> Am 24.06.2011 18:03, schrieb Harald Keller:
>>> sorry der Code hat es verhackt:
>>>
>>> <?php
>>> require_once(PATH_tslib.'class.tslib_pibase.php');
>>>
>>> class my_ajax extends tslib_pibase {
>>>
>>>      public function main() {
>>>         $wert="mein test";
>>>         $GLOBALS['TSFE']->fe_user->setKey('ses','checkfields',$wert);
>>>         $GLOBALS['TSFE']->storeSessionData();
>>>         return;
>>>         }
>>> }
>>>
>>> $output = t3lib_div::makeInstance('my_ajax');
>>> echo $output->main();
>>>
>>> ?>
>>>
>>>
>>
>>
>> --
>> http://www.kay-strobach.de - Open Source Rocks
>>
>> TYPO3 .... inspiring people to share!
>> Get involved: http://typo3.org
>
>


--
http://www.kay-strobach.de - Open Source Rocks

TYPO3 .... inspiring people to share!
Get involved: http://typo3.org
_______________________________________________
TYPO3-german mailing list
TYPO3-german at lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german


More information about the TYPO3-german mailing list