Zum Inhalt springen

SELECT box mit strings hinterlegen

Erstellt am 1. Februar 2006 · 6 Antworten · letzte Antwort am 22. Juli 2006

Tags: Frage

nex ·

moin,

ich schreibe meine erste extension und kann kein php. das ist keine gute mischung, bitte euch trotzdem nicht zu lachen 😉

es geht um eine select-box, die ich mit kickstarter angelegt habe. diese enthÀllt die werte: [nichts],Prof.,Dr.,Prof.Dr.
die ausgabe liefert mir nur die werte der option-values. was ist der beste weg, die strings ins frontend zu befördern?

Unbekannter Benutzer ·

Also mit folgendem Code bekommst du eine Selectbox ausgeben!!!

	/**
	 * Returns a Selectbox with values out of $dataArray(filled with loccallang_db.php)
	 * @param int $nr: int varialbe (uid) of current selected value - returns selectbox with a selected value
	 * @return	string		$colContent: html string for selectbox from db table myTable
	 */
	function getSelectBox ($nr) {
		$i = 0;
		$selected = 'selected="selected"';
		$readonly = 'readonly="readonly"';
		
		// Get the error codes from locallang to dataArray
		$dataArray = $this->getSelectBoxEntries(); // <-- Select Box EintrÀge/Werte
		$colContent = '<select size="1" name="'.$this-">prefixId.'[mySelBox]" >';
		$colContent .= '<option label="'.$value.'" value="'.$i.'">----</option>';
		$i++;
		foreach ($dataArray as $value) {
			if ($i == $nr) {
				$colContent .= '<option value="'.$i.'" selected="" readonly="">'.$value.'</option>';
			}
			else {
				$colContent .= '<option value="'.$i.'">'.$value.'</option>';
			}
			$i++;
		}
		$colContent .= '</select>';
		return $colContent;
	}

Hier das DataArray:

	function getSelectBoxEntries() {
		$dataArray = array(
			'Hr.' => $GLOBALS['TSFE']->sL('LLL:EXT:myext/locallang_db.php:myTable.Anrede.I.1'),
			'Fr.' => $GLOBALS['TSFE']->sL('LLL:EXT:myext/locallang_db.php:myTable.Anrede.I.2'),
			'Dr.' => $GLOBALS['TSFE']->sL('LLL:EXT:myext/locallang_db.php:myTable.Anrede.I.3'),
			'Prof.' => $GLOBALS['TSFE']->sL('LLL:EXT:myext/locallang_db.php:myTable.Anrede.I.4'),
		);
		return $dataArray;
	}

Solltest du eine Box anzeigen lassen wollen die bereits einen Wert vorbelegt hat, so musst du $nr beim funktionsaufruf ĂŒbergeben!!!

Gruß
Goido

elv1s ·

Hallo,

In welche Datei(en) muss man die Änderungen vornehmen?

Dann erscheinen die Werten sowie eingegeben in Backend im Frontend?
Also, wenn man z.B. ein extra Feld fĂŒr tt_news angelegt hat im "Make new Extension". Hier bestimmte Labels bzw. Felder definiert hat und diese auch im Backend erscheinen und angeklickt werden können aber im Frontend nur Werten wie z.B. 1 erscheinen statt z.B. "Auto"

vielen Dank im Voraus!!
Gruss
Kasper

Stoffel ·

Hallo Goa Goido,

vielen Dank fĂŒr den Code. Die Select-Box wird bei mir jetzt angezeigt, allerdings ohne Inhalte. Kannst Du mir bitte die Funktion getSelectBoxEntries() mal nĂ€her erlĂ€utern? Ich verstehe die Zeilen mit

$GLOBALS['TSFE']->sL('LLL:EXT:user_prodselector/locallang_db.php:myTable.Anrede.I.1'),

nur im Ansatz.

Ist die Sprachumschaltung gleich mit eingebaut??

Vielen Dank fĂŒr Deine Hilfe!

Stoffel

robin ·

Vielleicht habe ich dich ja mißverstanden, aber du möchtest doch im BE irgendwo eine Selectbox mit der Anrede haben, und dort eine auswĂ€hlen? Den eingegeben Wert kannst du doch in einem Template einfach ĂŒber den dazugehörigen Feldnamen ausgeben lassen, z.B. {field:tx_deineExtension_Anrede}? Oder willst du etwas völlig anderes?

Gruß

Stoffel ·

Hallo,

wie du siehst haben in diesem Post nun mehrere verschiedene User zu Wort gemeldet. Mein Problem ist, dass ich im Frontend mehrere SELECT-Listen benötige. Ich habe also das Skript von Goa Goido in meine user_blabla_pi1.php eingebaut, und es erscheint auch eine Selectbox im Frontend. Allerdings ohne Inhalt. Und um den Inhalt zu bekommen, möchte ich gerne verstehen, was in der Funktion GetSelectBoxEntries passiert.

Unbekannter Benutzer ·

Hallöchen,

sry, lange nicht mehr hier gewesen!
Also in der Function getSelectBoxEntries mache ich nichts weiter ausser mir sprach-unabhÀngigen Strings aus der Datei locallang_db.php in ein array zu holen:

= $GLOBALS['TSFE']->sL('LLL:EXT:my_extension_name/locallang_db.php:myTable.Anrede.I.0'),
= $GLOBALS['TSFE']->sL('LLL:EXT:my_extension_name/locallang_db.php:myTable.Anrede.I.1'),
= $GLOBALS['TSFE']->sL('LLL:EXT:my_extension_name/locallang_db.php:myTable.Anrede.I.2'),

Schau dir deine locallang_db.php mal an und Àndere die pfadangaben innerhalb der Klammern auf Deine Extension.

Du kannst das Array auch aus der Datei pi1/locallang.php mit:

= $this->pi_getLL('Anrede1');
= $this->pi_getLL('Anrede2');
= $this->pi_getLL('Anrede3');

befĂŒllen (initial einmal $this->pi_loadLL(); aufrufen nicht vergessen)!

Achtet auch darauf das in der For schleife der Valuewert der Options mit $i also einem integer wert befĂŒllt wird ;-)

Hoffe das Hilft weiter,
GrĂŒĂŸe
Goido