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?
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
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
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
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Ă
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.
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