Hallo,
bin jetzt nicht unbedingt der Profi aber ich würde sagen, dein Rückgabewert von editView() wird nirgendshin übergeben.
$editview->editView();
würd ich auf
$content .= $editview->editView();
und außerdem heißt deine Funktion in dem anderen Plugin auch editView(). Weiß jetzt nicht ob das auch einen Fehler gibt, da du die Funktion eh über ein anderes Objekt aufrufst aber ich würde sie umbenennen.
Hallo wurgli und danke für die Antwort.
Ich habe deine Threads gelesen, aber hilft deine Lösing nicht.
return $content habe ich in der Funktion in der editview Datei.
$content .= $editview->editView();
Bewirkt gar nichts - mein echo aber bleibt da 🙂
Ich bin sicher, dass das Problem von den Markers kommt.
wenn das echo in der funktion ausgegeben wird, wird diese auch aufgerufen. also es ist sicher ein problem der marker!
Es gibt aber etwas mehr. Ich benutze der Business Template, das mit Typo3 kommt.
Er besteht aus zwei Frames. Und in dem zweiten Frame ist zwar mein echo ausgegeben, aber es gibt kein Hintergrund.
hast du geprüft ob der pfad stimmt?
zum testen würde ich das template mal in fileadmin legen, also :
$template = $this->cObj->fileResource('fileadmin/templates/template.html');
Der Pfad muss ja stimmen!
Wenn ich alles in meiner Main-Klasse schreibe - dann erscheint alles so wie es soll.
Also ersmal hallo, ich geb wurgli recht ...du hast zwar ein return content in deiner fkt editview() aber dieser content muss auch an einen anderen oder vielmehr in einen anderen contentbehälter rein...denn return content erzeugt ja keinen content, sondern die letzte Zeile in deiner Mainfkt erzeugt diesen....mit $editview->editview() schiesst du den Inhalt der in der editview() erzeugt wird ins leere....
die main muss so aussehen wie sie aussieht bei dir, aber die in deiner pi enthaltene fkt editview muss so aussehen:
1.
function editView(){
$editview = new tx_editview();
return $editview->editView();
}
oder
function editView(){
$editview = new tx_editview();
$content = $editview->editView();
return $content;
}
dann müsste es funzen!
Gruss Boris
Noch einmal Danke für die Hilfe!
Bobsomoto - vielleicht hast du recht, aber zur Zeit hilft deine Lösung nicht.
Ich habe ein bisschen Debugging gemacht (ah echo ich liebe dich 🙂)
Ich habe folgendes geschrieben:
function editView() {
echo $content.'1'.'<br />';
$content = 'editView';
echo $content.'2'.'<br />';
$template = $this->cObj->fileResource('EXT:xxx/template/xxx.html');
//
echo $content.'3'.'<br />';
$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'] . '"/>';
$markerArray['###AUTHOR###'] = $row['author'];
$markerArray['###TARGETGROUP###'] = $row['targetgroup'];
$markerArray['###PLACE###'] = $row['place'];
$markerArray['###TRAINER###'] = $row['trainer'];
$markerArray['###COST###'] = $row['cost'];
$markerArray['###CATEGORIES###'] = $this->loadCategories();
;
echo $content.'4'.'<br />';
//Subpart extrahieren
$subpart = $this->cObj->getSubpart($template, "###TEMPLATE_EDITVIEW###");
// Substitution durchf�hren
$content = $this->cObj->substituteMarkerArray($subpart, $markerArray);
echo $content.'5'.'<br />';
return $content;
}
Als Ergebnis bekomme ich:
1
editView2
Mein echo 3 ist nicht ausgegeben? Hm was ist los?
Wenn ich das gleiche mit meinen anderen Funktionen mache z.B. listView() bekomme ich das erwartende Ergebnis.
Es scheint so aus, dass nach $template = $this->cObj->fileResource('EXT:bw_seminardb/template/seminardb_template.html'); der Script stoppt.
P.S. Und wieso in meiner PHP Code .'<br />' ist ausgegeben als .'' ?
Hallo AI..also ich in deinem code ist ein Semikolon zu viel, ich denke nicht daß das der Fehler ist...vielleicht hasse ja auch nur was rausgeschmissen.....von welcher Grösse der pi sprechen wir überhaupt, weil ich persönlich garnix aus der pi Klasse rausschmeissen würde, hauptsache das ist sauber in einer Fkt ausgelagert...nichts destotrotz, entweder ich würde die editView als Fkt in der pi
zum funktionieren bringen und wenn die 100% läuft auslagern wenns unbedingt sein muss oder wenn die listView ausgelagert ist und funzt kopier die 1:1 und änder die
aber in Einzelschritten das wenn was falsch ist du weisst was!!!
Was anderes kann ich dazu nicht sagen ohne den ganzen code zu sehen und selbst Hand anzulegen.....
Gruss Boris
Zur Zeit ist nur 50% meiner Extension fertig. (SingleView und ListView)(300 Zeilen)
Ich muss noch editView machen.
Wenn alles in der pi Klasse ist, dann funktioniert es. Die Klasse ist auch nicht so groß aber am Ende wird ja wahrscheinlich mehr als 900 Zeilen sein und ich will dass ich alles schön strukturiere.
Ich sehe kein Grund für das Ding nicht zu funktionieren.
editView so wie du es siehst - funktioniert wenn es im pi1 ist, aber nicht wenn es in einer anderen Klasse ausgelagert ist. Das nervt mich ja viel.
Gerade fällt mir auf das ich gerade an einem ähnlichen Problem sitze, ich rufe ne php datei in einer url auf, in form von http://www.meineseite.de/link.php die automatisch einloggen soll. Die funktioniert wenn ich die logindaten innerhalb der
datei deklariere, sobald ich versuche die aus der db zu laden funktioniert bei mir ein später in der datei enthaltenes header(); nicht mehr, also praktisch genau wie bei dir...ich hab mittlerweile rausbekommen das bei mir wohl irgendwelche t3lib klassen nicht richtig eingebunden sind....das würde heissen das du bei der auslagerung deiner Klasse vielleicht auch noch etwas einbinden musst damit die ausgabe und die restlichen echos nicht ignoriert werden, denn bei mir wird das vorher funktionierende header(); auf einmal auch ignoriert, obwohl es nichts enthält was mit den nicht eingebundenen dingen in zusammenhang steht! Vielleicht hilft dir das
Gruss Boris
Ich habe PHP show error endlich gestartet und es hat sich festgestellt, dass mein cObj fehlt.
Jetzt bei meinem Funktionaufruf schreibe ich
function editView(){
$editview = new tx_editview();
$editview->cObj = $this->cObj;
return $editview->editView();
}
Und es klappt soweit. Danke für die Hilfe!