Problem mit weiterleitung bei <form action

Fragen zum Entwickeln eigener Addons?

Moderator: General Support Moderators

Forum rules
Forumregeln
Locked
szifer
Joomla! Fledgling
Joomla! Fledgling
Posts: 1
Joined: Mon Apr 12, 2010 12:04 pm

Problem mit weiterleitung bei <form action

Post by szifer » Mon Apr 12, 2010 12:19 pm

Hallo,
ich wollte ein skript von mir zu einer joomla komponente umschreiben. ich bin bis jetzt auch soweit gekommen, dass ich die komponente über das joomla backend installieren konnte. danach habe ich dann auch ganz normal einen menülink gesetzt. funktioniert alles wunderbar wie bei anderen komponenten auch. nur finde ich für folgendes problem keine lösung:

es handelt sich um ein formular, das bei drücken auf den submit button die switch.php aufrufen soll, welche im selben verzeichniss liegt.

hier mal mein gekürzter code aus der vkcreator.php mit dem formular:

Code: Select all

<form  method="post" action="switch.php" name="gotoForm" id="gotoForm">
<input type="hidden" name="option" value="com_vkcreator"/>
<input type="submit" name="submit" value="absenden">
ich habe schon ansatzweise mitbekommen dass ich nicht die switch.php direkt aufrufen sollte sondern die index.php mit parametern. liege ich da richtig? aber k.a. wie das genau aussehen soll.

Chapter2
Joomla! Intern
Joomla! Intern
Posts: 57
Joined: Sat Feb 06, 2010 10:20 am

Re: Problem mit weiterleitung bei <form action

Post by Chapter2 » Thu Apr 22, 2010 8:21 am

Moin!

Die action Angabe im Formular-Element bezieht sich bei einer relativen Pfadangabe immer relativ zur einbindenden PHP-Datei. In Joomla ist das die index.php im Hauptverzeichnis.

Damit die Daten Korrekt an dein Modul/Komponente/whatever gesendet werden, gib in action entweder Pfad relativ zur index.php an oder nutze entsprechende GET-Parameter. Letztere Methode ist deutlich eleganter.

Code: Select all

<form action="index.php?option=com_meineKomponente&view=x&task=tuwas" method="z">

oder 

<form action="components/com_meineKomponente/[...]/meineDatei.php" method="z">
Viel Erfolg,
Arnd

ZeroFlash
Joomla! Apprentice
Joomla! Apprentice
Posts: 5
Joined: Mon May 31, 2010 1:19 pm

Re: Problem mit weiterleitung bei <form action

Post by ZeroFlash » Mon May 31, 2010 1:23 pm

hi

ich habe ein änliches problem mit einm formular, welches sich in einem modul befindet.

zuerst hatte ich versuchst das formular so abzusenden

Code: Select all

<form method="post" action="<?php echo $this->baseurl ?>">
das geht im safari, ff .... aber leider nicht im ie
daraufhin habe ich es so versucht

Code: Select all

<form method="post" action="<? echo $alias ?>.html">
bewirkt wieder das gleiche.

langsam bin ich echt am verzeifeln.

weiß jemand von euch rat?

vielen dank schon mal =)

Chapter2
Joomla! Intern
Joomla! Intern
Posts: 57
Joined: Sat Feb 06, 2010 10:20 am

Re: Problem mit weiterleitung bei <form action

Post by Chapter2 » Mon May 31, 2010 3:45 pm

Hiho,

$baseurl ist eine Eigenschaft von JView. $this->baseurl funktioniert also nur mit Views in Komponenten. Wirft man einen Blick auf den Quellcode der JView-Klasse, kann man diese Eigenschaft für Module leicht nachbilden (Datei libraries/joomla/application/component/view.php):

Code: Select all

$this->baseurl = JURI::base(true);
Viel Erfolg,
Arnd

ZeroFlash
Joomla! Apprentice
Joomla! Apprentice
Posts: 5
Joined: Mon May 31, 2010 1:19 pm

Re: Problem mit weiterleitung bei <form action

Post by ZeroFlash » Mon May 31, 2010 5:24 pm

hallo arnd,

vielen dank für deine schnelle antwort.
bekomm das mit deinem hinweis dennoch iwie nicht hin :(

hab jetzt mehreres versucht
einmal die zeile von dir vor der ausgabe des form tags ausgegeben und dann noch im form tag selber

Code: Select all

<form method="post" action="<?php echo $this->baseurl = JURI::base(true); ?>">
und so

Code: Select all

<?php $this->baseurl = JURI::base(true);
?>
<form method="post" action="<?php echo $this->baseurl; ?>">
wahrscheinlich hab ich dich falsch verstanden?!
:-[

Chapter2
Joomla! Intern
Joomla! Intern
Posts: 57
Joined: Sat Feb 06, 2010 10:20 am

Re: Problem mit weiterleitung bei <form action

Post by Chapter2 » Fri Jun 04, 2010 8:53 am

Sorry für die lange Antwortpause. Ich war etwas länger unterwegs. Du hast mich in der Tat missverstanden.

Im View von Komponenten wird $this->baseurl benutzt, bei Modulen JURI::base(true)

ZeroFlash
Joomla! Apprentice
Joomla! Apprentice
Posts: 5
Joined: Mon May 31, 2010 1:19 pm

Re: Problem mit weiterleitung bei <form action

Post by ZeroFlash » Fri Jun 04, 2010 9:33 am

macht doch nix. bin froh, wenn überhaupt jemand antworten und nicht solche antworten wie lies das manuell oder google... kommen

zur topic. geht wieder nicht im ie.

ich post an der stelle einfach mal den kompletten code

Code: Select all

<?php
/* Variable auslesen */

$id = & JRequest::getInt('id'); 
$abfrage = "SELECT * FROM jos_content WHERE id = '$id'";
$ergebnis = mysql_query ($abfrage);
while ($row = mysql_fetch_array ($ergebnis)) {
	$alias = $row['alias'];
}
/* Verzeichnis auslesen */
$path = "images/stories/flexgallery/".$alias."/";
$datei = array();
if ($handle = opendir($path)) {
	while (false !== ($file = readdir($handle))) {
		if ($file != '.' && $file != '..') {
	    	$file = $path.$file;
	    	array_push ($datei,$file);
			sort ($datei);
			$count++;
		}
	}
	closedir($handle);
}
/* Bildergalerie */
$blaettern = $_POST['blaettern'];
$seite = $_POST['seite'];
if ((!isset($_POST['blaettern'])) and (!isset($_POST['seite']))) {
	$seite = 1;
}
if (isset($_POST['blaettern'])) {
	$seite = $seite + $blaettern;	
	if ($seite <= 0) {
		$seite = 1;
	}
}
$anzahl = 3;
$ziel = $seite * $anzahl;
$start = $ziel - $anzahl;
while (($start<$ziel) and ($start < $count)) {
	echo "<a href=\"".$datei[$start]."\" rel=\"lightbox[roadtrip]\" title=\"\"><img src=\"".$datei[$start]."\" height=\"100\" title=\"\" alt=\"\" /></a>";
	$start++;
}
?>
<form method="post" action="<?php echo JURI::base(true) ?>">
	<?php if ($seite > 1) { echo "<input type=\"image\" src=\"../modules/mod_flexgallery/images/pfeil_links.png\" name=\"blaettern\" value=\"-1\"/>"; } ?>
	<?php if ($start < $count) { echo "<input type=\"image\" src=\"../modules/mod_flexgallery/images/pfeil_rechts.png\" name=\"blaettern\" value=\"1\"/>";} ?>
	<input type="hidden" name="seite" value="<?php echo $seite; ?>"/>
</form>

mit scheint es langsam, dass das formular nen fehler hat?!

kurze erklärung: soll eine kleine frei positionierbare bildergalerie werden, die außerhalb des contents liegt. bilder werden aus entsprechendem verzeichnis ausgelesen und ausgegeben.

bei mehr als 3 bildern erfolgt blättern und dafür brauch ich das form um dem script die info über das weiter zu geben.
:eek:

Chapter2
Joomla! Intern
Joomla! Intern
Posts: 57
Joined: Sat Feb 06, 2010 10:20 am

Re: Problem mit weiterleitung bei <form action

Post by Chapter2 » Fri Jun 04, 2010 11:04 am

Gut, wir gehen dann mal den Standardweg aller Formulare in Joomla über die index.php

Code: Select all

<form action="index.php" method="post">
[...weitere Formularelemente...]
[Submit-Button]
<input type="hidden" name="option" value="com_meineKomponente" />
<input type="hidden" name="task" value="switch" />
<?php echo JHTML::_( 'form.token' ); ?> /* Gegenmaßnahme CSRF Attack */
</form>
Die index.php leitet die Anfrage an die Komponente weiter. In der Komponente wird in der controller.php nach einer der Funktion switch gesucht (wegen dem hidden-feld "task"). Genau dort kannst du deine switch.php per include/require einbinden.

An den Anfang der switch.php gehört obligatorisch:

Code: Select all

defined('_JEXEC') or die('kein direkter Zugriff');
JRequest::checkToken() or die( 'Invalid Token' );

ZeroFlash
Joomla! Apprentice
Joomla! Apprentice
Posts: 5
Joined: Mon May 31, 2010 1:19 pm

Re: Problem mit weiterleitung bei <form action

Post by ZeroFlash » Fri Jun 04, 2010 11:18 am

danke =)

so langsam dämmerts mir wie der weg ist =)

gibts da irgendwo ne doku zum lesen vom weg eines formulars/ beispiele für module/componenten
zum nachlesen und nachvollziehen?

RedEye
Joomla! Ace
Joomla! Ace
Posts: 1460
Joined: Sat Jan 21, 2006 8:42 pm

Re: Problem mit weiterleitung bei <form action

Post by RedEye » Fri Jun 04, 2010 12:10 pm

ZeroFlash wrote:danke =)

so langsam dämmerts mir wie der weg ist =)

gibts da irgendwo ne doku zum lesen vom weg eines formulars/ beispiele für module/componenten
zum nachlesen und nachvollziehen?
Eine Doku speziell für Formulare hab ich noch nicht gesehen, aber die normale Doku zu Componenten sollte Dir bestimmt auch helfen, hier findest ein paar Infos http://docs.joomla.org/Developers
Die index.php leitet die Anfrage an die Komponente weiter.
Jein, im Grunde ist die Angabe der index.php eher obligatorisch, es ist schöner es reinzuschreiben, aber könnte auch leer sein, könntest Du z.B. mal mit dem Search Module testen.

Die Anfrage wird durch option und task gesetzt, option hat als value Deinen Componenten Namen und task ist die Funktion die gemacht werden soll.
Hast Du diese Angaben also in Deinen Post Daten wird geschaut ob option vorhanden ist, wenn ja wird der task ausgeführt im Controller wenn vorhanden.
Im Controller wird dann beim task (in Deinem Fall die function switch) als aller erstes mal der Token geprüft dann kommt der Rest, im normal Fall wird dann von dort das Model angesprochen und dann kommt der View und die template Ausgabe vom View.

ZeroFlash
Joomla! Apprentice
Joomla! Apprentice
Posts: 5
Joined: Mon May 31, 2010 1:19 pm

Re: Problem mit weiterleitung bei <form action

Post by ZeroFlash » Fri Jun 04, 2010 1:14 pm

super vielen dank :) .

ich werd berichten ob ich mit euren hinweisen klar komme =)

ob ich mit option eine com_xyz der mod_xyz anspreche sollte denke ich egal sein?!

RedEye
Joomla! Ace
Joomla! Ace
Posts: 1460
Joined: Sat Jan 21, 2006 8:42 pm

Re: Problem mit weiterleitung bei <form action

Post by RedEye » Fri Jun 04, 2010 1:34 pm

ZeroFlash wrote:super vielen dank :) .

ich werd berichten ob ich mit euren hinweisen klar komme =)

ob ich mit option eine com_xyz der mod_xyz anspreche sollte denke ich egal sein?!
Nein, im Grunde spricht Dein mod_xyz Dein com_xyz an, bei option gehört nen Component rein und bei task der entsprechende function im controller vom Component.
Ein Module hat keinen task/controller, da es im Grunde halt nur Erweiterungen zu Componenten sind oder stand alone was ausführen, aber in der Regel hast Du immer ein Component im Hintergrund wenn Du ein Formular aus einem Module ansprichst, siehe login/search module z.B.

Chapter2
Joomla! Intern
Joomla! Intern
Posts: 57
Joined: Sat Feb 06, 2010 10:20 am

Re: Problem mit weiterleitung bei <form action

Post by Chapter2 » Fri Jun 04, 2010 1:50 pm

Den Ausführung von Redeye ist nichts mehr hinzuzufügen.
Für einen ersten Überblick über Joomla 1.5 kann ich dir nur das Openbook von Galileo-Computing ans Herz legen.


Locked

Return to “Entwicklerforum”