Salut a tout le monde 🙂
So Leute 🙂 Ich schreibe seit lange eine Extension, dass Seminare verwalten soll. Ich habe den Kickstarter benutzt um das Grundgerüst zu erzeugen.
Die pi1 Klasse wird immer grösser, und grösser und deswegen habe ich mir heute gedacht, dass es vielleicht nützlich wäre, wenn ich die Funktionen die in pi1 aufgerufen werden in einer anderen Datei aufrufe.
Hier eine Erläuterung mit PHP Kode.
In meiner pi1 Klasse habe ich folgendes:
function main($content, $conf) {
$this->pi_loadLL();
// parse XML data into php array
$this->pi_initPIflexForm();
// get values
$this->config['view'] = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'view_input', 'sVIEW');
$this->config['eview'] = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'eview_input', 'eVIEW');
$this->config['pageforsingleview'] = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'pageforsingleview', 'eVIEW');
$this->config['maxReviewOnPage'] = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'maxReviewOnPage', 'eVIEW');
$this->config['pageBrowser'] = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'pageBrowser', 'eVIEW');
switch ($this->config['view']) {
case 'single' :
$content .= $this->singleView();
break;
case 'list' :
$content .= $this->listView();
break;
case 'edit' :
$content .= $this->editView();
break;
case 'meineSeminare' :
$content .= $this->meineSeminare();
break;
}
return $this->pi_wrapInBaseClass($content);
}
So in backend lege ich eine Seite und lege ich da meine Extension. Ich habe dann die Möglichkeit einen Ansicht auszuwählen (listView, singleVie und so weiter).
Ich möchte jetzt meine editView in einer externen Datei schreiben.
require_once (PATH_tslib . 'class.tslib_pibase.php');
class tx_editview extends tslib_pibase {
function editView() {
echo 'test';
$content = 'editView';
$template = $this->cObj->fileResource('EXT:xxx/template/xxx_template.html');
$sql = $GLOBALS['TYPO3_DB']->sql_query("SELECT * FROM xxx ");
$row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($sql);
// Substitutionen festlegen
$markerArray['###SUBJECT###'] = '<input type="text" name="subject" size="20" value="' . $row['subject'] . '" />';
// Subpart extrahieren
$subpart = $this->cObj->getSubpart($template, "###TEMPLATE_EDITVIEW###");
// Substitution durchf�hren
$content = $this->cObj->substituteMarkerArray($subpart, $markerArray);
return $content;
}
}
if (defined('TYPO3_MODE') && bla bla bla;
}
?>
Jetzt in meiner pi1 Klasse habe ich tx_editview.php included und da mache ich eine instanz der Klasse und dann starte ich die Funktion.
function editView(){
$editview = new tx_editview();
$editview->editView();
}
ich bekomme mein echo ausgegeben (test), aber nicht die Markers. Irgenwie wird der Content nicht gefüllt.
Was ist daran falsch? Was muss noch in meiner editview-Datei geschrieben werden?
Ich habe überlegt, dass es vielleicht besser wäre wenn ich die pi1 erweitere (editview extends pi1) dann aber habe ich das Problem, dass innerhalb von pi1 wieder pi1 aufgerufen wird und das ist mit einer Fehlermeldung verbunden.
Danke im Voraus!