Hallo,
ich habe ein paar Fragen zur Entwicklung von Extensions. So langsam habe ich das Gefühl, je mehr ich zu dem Thema lese, desto verwirrter werde ich...
Mein Problem ist folgendes: Ich habe mit dem Kickstarter ein Frontend Plugin erstellt, funktioniert soweit auch sehr gut. Nun möchte ich bei Klick auf einen Button per AJAX Daten hinzufügen. Das heißt, ich rufe eine PHP-Datei auf. Auch dieser Schritt funktioniert. Nur habe ich in der "neuen" PHP-Datei keinen Datenbank-Zugriff und weiß nicht, wie ich diesen am besten herstelle.
Ich habe zwei Varianten ausprobiert:
Folgenden Code in die PHP-Datei eingebunden:
define('PATH_tslib', $_SERVER['DOCUMENT_ROOT'].'/typo3/sysext/cms/tslib/');
define('PATH_t3lib', $_SERVER['DOCUMENT_ROOT'].'/t3lib/');
define('PATH_typo3conf', $_SERVER['DOCUMENT_ROOT'].'/typo3conf/');
require_once(PATH_t3lib.'class.t3lib_extmgm.php');
require_once(PATH_tslib.'class.tslib_pibase.php');
require_once(PATH_t3lib.'class.t3lib_db.php');
require_once(PATH_t3lib.'class.t3lib_div.php');
require_once(PATH_t3lib.'config_default.php');
require_once(PATH_typo3conf.'localconf.php');
$GLOBALS['TYPO3_DB'] = t3lib_div::makeInstance('t3lib_DB');
$GLOBALS['TYPO3_DB']->connectDB();
Anschließend habe ich probiert, die PHP-Datei in Form einer Klasse anzulegen und in der ext_localconf.php zu registrieren. Dies habe ich auf 2 Arten ausprobiert, die ich aber beide nicht zum Laufen bringen konnte (vermutlich, weil ich nicht so 100%ig verstehe, was ich da eigentlich tue):
$TYPO3_CONF_VARS['FE']['eID_include']['te_skills'] = 'EXT:te_skills/pi1/class.create_new_skill.php';
$TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/te_skills/pi1/class.create_new_skill.php'] = t3lib_extMgm::extPath($_EXTKEY) . 'pi1/class.create_new_skill.php';
Ich verstehe noch nicht genau, wie ich grundsätzlich bei der Extension-Entwicklung vorgehen sollte. Irgendwo habe ich gelesen, dass man alle Funktionen als Methoden in PHP-Klassen anlegen sollte. Leider stand dort nicht, wieso. Wenn ich eine Funktion nur einmal benötige, warum soll ich dann extra eine Methode dafür anlegen?
Wenn ich mehrere Funktionen über AJAX aufrufen möchte, dann würde ich eigentlich für jede Funktion eine einzelnen PHP-Datei anlegen. Sollte ich dann in jeder Datei eine Klasse definieren? Ich verstehe den Sinn dahinter nicht.
Ich hoffe, es kann mir jemand helfen und etwas Licht in die Sache bringen. Im Moment weiß ich nicht so recht, wie ich weitermachen soll. So langsam verstehe ich immer mehr, warum gesagt wird, dass eine Einarbeitung in Typo3 Monate dauert ;-)
Schönen Gruß,
Tina