Zum Inhalt springen

Ziel bei Formularen in Extentsion

Erstellt am 19. Juni 2007 · 6 Antworten · letzte Antwort am 22. Juni 2007

Tags: PHP, Frage

Typo3glowe ·

Hallo

Mir ist etwas unklar welches Ziel ich für ein Formular in einer Extension bei Typo3 angeben muss. Wenn ich PHP_Self wähle, führt mein Weg irgendwie nur ins Leere.

Folgendenen Quellcode habe ich :

<form method="POST" action=""> <center>
input type="Submit" name="delete" value="'.$this->pi_getLL('button.delete').'"></form>

So funktioniert es dann auch. Jetzt hab ich nur das Problem, das Pear Quickform ums Verrecken keine leere Action nimmt, sondern dann mit PHP_Self überschreibt.

Der folgende Versuch mit der Übergabe der Id führt leider nicht zum gewünschten Ziel, sondern auf die Startseite:

// $formdelete= new HTML_QuickForm('frmDelete','post',"index.php?id=".$_GET['id']);
// $formdelete->addElement('submit','delete', $this->pi_getLL('button.delete'));
//
// $content.=$formdelete->toHtml();

Welches Ziel muss ich angeben, damit er wieder auf die aufrufende Seite zugreift? Bzw wie bringe ich Quickform bei, das Action Feld leer zu lassen?

Wäre dankbar für jede Hilfe

NickD ·

folgendes ist eigentlich richtig:

new HTML_QuickForm('frmDelete','post',"index.php?id=".$_GET['id']);

hast du dir mal den quelltext angesehen, was er da in form reinschreibt?

just2b ·

Hallo,

NickD schrieb

folgendes ist eigentlich richtig:
new HTML_QuickForm('frmDelete','post',"index.php?id=".$_GET['id']);

ja möglichst ja nicht die API von TYPO3 verwenden.
richtig ist

 <?$GLOBALS['TSFE']->id?>

@ Nick: bist ja schon lang genug dabei, auch in deinem pagebrowser usw kann und soll man die API verwenden, gehört nicht hier her, wollt ich aber doch loswerden

georg

NickD ·

klar, hast ja recht. ich bin zwar schon lange dabei, lern aber immer wieder dazu. das problem ist, das ich nicht nur unter typo3 code und da gewöhnt man sich leicht etwas an.

Typo3glowe ·
NickD schrieb

folgendes ist eigentlich richtig:

new HTML_QuickForm('frmDelete','post',"index.php?id=".$_GET['id']);

hast du dir mal den quelltext angesehen, was er da in form reinschreibt?

Ja hab ich geguckt. Und da gibt er wie erwartet bei der action index.php?id4 an, was der Seitenzahl entspricht.

Nur wenn ich den Link dann anklicke, geht er zwar auf die Seite, aber ohne die erwarteten Aktionen auszuführen. Ist das Actionfeld leer, dann führt er die richtige Aktion aus.

Ich habs jetzt "gelöst" in dem ich in der Pear Klasse von Quickform das Überschreiben einer leeren Eingabe, mit PHP_Self auskommentiert habe.

Bei PHP_Self gibt er bei Action "pfadzurdatei/index.php" als Ziel an.

Ich hatte auch schon die ID über die API geholt, wie vorgeschlagen. Dachte nur, ich probiers mal so aus, vielleicht ändert sich was. 🙂

Glaub man kann Quickform nicht beibringen eine leere Action zu nehmen.

Ich kann mir aber auch nicht erklären, warum er bei Angabe der ID die Werte irgendwo verschwinden. Hmm, ich schau gerade mal nach ob ich den normalen Post Array benutze, statt die Api-Funktion.

Typo3glowe ·

Hab jetzt mal $this->pi_getPageLink($GLOBALS['TSFE']->id) benutzt, um den richtigen Link zu bekommen.

Funktioniert leider auch nicht. Die Post Variablen les ich jetzt auch über die Api Funktion aus.

Der Effekt bleibt aber der selbe, lasse ich action leer, werden die Variablen scheinbar richtig übergeben, wähle ich als Ziel index.php?id=4 also die Adresse der aktuellen Seite werden diese scheinbar nicht richtig ausgewertet, und es kommt einfach nur die normale Seite.

Typo3glowe ·

Hab jetzt das Problem gefunden. Wenn man einen Link übergibt statt einer leeren Action gehen die Get-Variablen verloren. Beim "" bleiben sie angehängt.

Deshalb funktioniert es dann auch.

Mit $this->pi_getPageLink($GLOBALS['TSFE']->id,'',t3lib_div::_GET()) kann man die ganzen Parameter weiterreichen.