Hallo Zusammen,
wie man eine mit der Subpalette in Verbindung mit einer Checkbox arbeitet, verstehe ich, aber wie geht das in Verbindung mit einem Radio-Feld, wo es ja auf den gewählten Wert ankommt?
Vielen Dank!
Hallo Zusammen,
wie man eine mit der Subpalette in Verbindung mit einer Checkbox arbeitet, verstehe ich, aber wie geht das in Verbindung mit einem Radio-Feld, wo es ja auf den gewählten Wert ankommt?
Vielen Dank!
Ich habe es herausgefunden und denke folgendes Beispiel beschreibt das ganz gut:
PHP-Code:
//...
'palettes' => array
(
'__selector__' => array('resource'),
'news' => 'title;{archives_legend},resource,news_archives;{feedSettings_legend},format,language,source,maxItems,feedBase,alias,description',
'calendar' => 'title;{archives_legend},resource,calendar;{feedSettings_legend},format,language,source,maxItems,feedBase,alias,description'
),
// Fields
'fields' => array
(
'resource' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_summarizeFeeds']['resource'],
'default' => 'news',
'inputType' => 'radio',
'options' => array('news', 'calendar'),
'reference' => &$GLOBALS['TL_LANG']['tl_summarizeFeeds']['resource_values'],
'eval' => array('mandatory'=>true, 'submitOnChange'=>true)
),
//...
Weiß jemand, ob die Möglichkeit besteht, dass man die Paletten von zwei Feldern abhängig macht (also z.B. einer Auswahl mit Radio-Buttons und noch eine Select-Auswahl)?
Du koenntest es ueber den onload Hook loesen. Dann einfach aus deiner palette die gewuenschten EIntrage entfernen
von Willi Voltz aus PR 500: Henry George sagte einmal: »Kultur ist Zusammenarbeit.«
Contao-Hosting: begeisterter Uberspace-Nutzer
Das ist eine gute Idee, auch wenn mich die Idee das über die Palettes zu machen noch nicht ganz losgelassen hat
Funktioniert leider nicht. onload_callback wird erst nach der Renderung der Felder aufgerufen.
Nachtrag: Funktioniert doch, war mein Fehler
Geändert von Torben (05.08.2009 um 16:51 Uhr)
Dein Endresultat würde mich interessieren.
Felder in Abhängigkeit von der Auswahl von Radio Buttons hatte ich mal probiert vor längerer Zeit und habs nicht recht hinbekommen. Wäre ja ähnlich.
Grüße, BugBuster"view source" is your guide.Danke an alle Amazon Wunschlisten Erfüller
Wenn die Palette nur von einem Feld abhängig ist, löst man das wie folgt:
Für den Fall, dass wir mehr als ein Feld haben, nach dessen Werten sich die Palette ändern soll, kommt der onload_callback ins Spiel:PHP-Code:
'palettes' => array
(
// Im Array den Namen des Feldes, nach dessen Werten
// die Palette gewählt werden soll
'__selector__' => array('FeldPalette'),
// 'default' ist nur nötig, falls das Feld keinen default-
// Wert hat
'default' => 'Feld1,Feld2,FeldPalette,...',
// 'Wert1' und 'Wert2' sind die möglichen Werte des
// Feldes Palette
'Wert1' => 'Feld1,Feld2,FeldPalette,FeldWert1,...',
'Wert2' => 'Feld1,Feld2,FeldPalette,FeldWert2,...'
),
'fields' => array
(
// Feld nach dem die Auswahl der Palette getroffen
// werden soll
'FeldPalette' => array
(
// Geht natürlich auch mit jedem anderen Feld
'inputType' => 'radio',
// Werte des Feldes, nach denen die Palette
// gewählt wird
'options' => array('Wert1', 'Wert2'),
// 'submitOnChange' ist wichtig
'eval' => array('submitOnChange'=>true),
// sonstige Eigenschaften (label, reference, etc.)
),
// weitere Felder...
)
Ich hoffe die Kommentare erklären die Vorgehensweise, ansonsten bitte nachfragenPHP-Code:
$GLOBALS['TL_DCA']['...'] = array
(
'config' => array
(
// Klasse unf Funktion an onload_callback übergeben
'onload_callback' => array
(
array('tl_example', 'updatePalette')
),
// weitere Angaben
),
// Palette nun mit FeldOnload ansonsten wie im
// vorherigen Beispiel
'palettes' => array
(
'__selector__' => array('FeldPalette'),
'default' => 'Feld1,Feld2,FeldPalette,FeldOnload,...',
'Wert1' => 'Feld1,Feld2,FeldPalette,FeldOnload,FeldWert1,...',
'Wert2' => 'Feld1,Feld2,FeldPalette,FeldOnload,FeldWert2,...'
),
'fields' => array
(
// Zweites Feld für Änderung der Pallete
'FeldOnload' => array
(
// Geht natürlich auch mit jedem anderen Feld
'inputType' => 'radio',
// Werte des Feldes, nach denen die Palette
// gewählt wird
'options' => array('Wert3', 'Wert4'),
// 'submitOnChange' ist wichtig
'eval' => array('submitOnChange'=>true),
// sonstige Eigenschaften (label, reference, etc.)
),
// Feld 'FeldPalette' wie im vorherigen Beispiel
'FeldPalette' => array
(
'inputType' => 'radio',
'options' => array('Wert1', 'Wert2'),
'eval' => array('submitOnChange'=>true),
// sonstige Eigenschaften (label, reference, etc.)
),
// weitere Felder...
)
);
class tl_example extends Backend
{
public function changePalette(DataContainer $dc) {
if (!$dc->id)
{
return;
}
// Wert aus Datenbank auslesen
$obj = $this->Database->prepare("SELECT * FROM tl_example WHERE id=?")
->limit(1)
->execute($dc->id);
// Abfrage, welcher Wert gewählt wurde
if ($obj->numRows > 0 AND $obj->FeldOnload == 'Wert3')
{
// Pallete mit str_replace anpassen
$GLOBALS['TL_DCA']['...']['palettes']['Default'] = str_replace(',FeldOnload', ',FeldOnload,FeldWert3', $GLOBALS['TL_DCA']['...']['palettes']['Default']);
$GLOBALS['TL_DCA']['...']['palettes']['Wert1'] = str_replace(',FeldOnload', ',FeldOnload,FeldWert3', $GLOBALS['TL_DCA']['...']['palettes']['Wert1']);
$GLOBALS['TL_DCA']['...']['palettes']['Wert2'] = str_replace(',FeldOnload', ',FeldOnload,FeldWert3', $GLOBALS['TL_DCA']['...']['palettes']['Wert2']);
}
}
}
Super Torben !
Ab ins Wiki damit !
von Willi Voltz aus PR 500: Henry George sagte einmal: »Kultur ist Zusammenarbeit.«
Contao-Hosting: begeisterter Uberspace-Nutzer
Wau, das sieht doch recht verständlich aus. Wenn ich mal ne ruhige Minute habe werd ich das mal probieren.
Danke.
Grüße, BugBuster"view source" is your guide.Danke an alle Amazon Wunschlisten Erfüller
Der arme leo wird immer unterschätzt!
PHP-Code:
$GLOBALS['TL_DCA']['...'] = array
(
'config' => array
(
// Klasse unf Funktion an onload_callback übergeben
'onload_callback' => array
(
array('tl_example', 'updatePalette')
),
// weitere Angaben
),
// Palette nun mit FeldOnload ansonsten wie im
// vorherigen Beispiel
'palettes' => array
(
'__selector__' => array('FeldPalette'),
'default' => 'Feld1,Feld2,FeldPalette,FeldOnload,...',
'Wert1' => 'Feld1,Feld2,FeldPalette,FeldOnload,FeldWert1,...',
'Wert2' => 'Feld1,Feld2,FeldPalette,FeldOnload,FeldWert2,...'
'Wert1Wert3' => 'Feld1,Feld2,FeldPalette,FeldOnload,FeldWert2,...'
'Wert2Wert3' => 'Feld1,Feld2,FeldPalette,FeldOnload,FeldWert2,...'
'Wert1Wert4' => 'Feld1,Feld2,FeldPalette,FeldOnload,FeldWert2,...'
'Wert2Wert4' => 'Feld1,Feld2,FeldPalette,FeldOnload,FeldWert2,...'
),
'fields' => array
(
// Zweites Feld für Änderung der Pallete
'FeldOnload' => array
(
// Geht natürlich auch mit jedem anderen Feld
'inputType' => 'radio',
// Werte des Feldes, nach denen die Palette
// gewählt wird
'options' => array('Wert3', 'Wert4'),
// 'submitOnChange' ist wichtig
'eval' => array('submitOnChange'=>true),
// sonstige Eigenschaften (label, reference, etc.)
),
// Feld 'FeldPalette' wie im vorherigen Beispiel
'FeldPalette' => array
(
'inputType' => 'radio',
'options' => array('Wert1', 'Wert2'),
'eval' => array('submitOnChange'=>true),
// sonstige Eigenschaften (label, reference, etc.)
),
// weitere Felder...
)
);
zu sehen/verwendet z.B. beim Accordion (Inhaltselement): Select-Menü für Typ-Auswahl und Radio für Accordion-Typ.
terminal42 gmbh
Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle
Funktioniert, werde ich dann so ins Wiki schreiben. Wobei ich bei meiner Erweiterung den onload_callback weiterhin benötige, da je nach gewähltem Wert einem Feld tl_class = w50 zugewiesen wird.
Ich hatte auch nach so einem Beispiel gesucht, aber nichts gefunden... und meine Versuche mit einem weiteren Array haben nicht funktioniert.
Geändert von Torben (06.08.2009 um 19:23 Uhr)
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Lesezeichen