Contao-Camp 2024
Ergebnis 1 bis 5 von 5

Thema: Config Datei: Wert eines vorherigen Auswahlfeldes übergeben

  1. #1
    Contao-Fan Avatar von dirksche
    Registriert seit
    05.08.2009.
    Ort
    Grosslittgen
    Beiträge
    641

    Standard Config Datei: Wert eines vorherigen Auswahlfeldes übergeben

    Hallo liebe Community,

    ich habe mit Rocksolid Custom Elements ein Inhaltselement, welches aus einer SQL Tabelle bestimmte Werte in einem Select Feld ausgeben soll. Das funktioniert auch soweit.
    Nun möchte ich vor dem Select Feld über ein Checkbox Menü noch eine Filterung nach Produktkategorien vornehmen. Je nach gewählter Produktgruppe soll die hinterlegte ID in die Datenbankabfrage übergeben werden. Daran scheitere ich derzeit.


    Code:
    <?php
    return array(
        'label' => array('Produkt Teaser', 'Produkt Teaser'),
        'types' => array('content'),
        'contentCategory' => 'texts',
        'standardFields' => array('cssID'),
        'wrapper' => array(
            'type' => 'none',
        ),
        'fields' => array(
            'kategorien' => array (
                'label' => array ('Kategorie', 'Wählen Sie eine Produktkategorie'),
                'inputType' => 'radio',
                'eval' => array('tl_class' => 'w50', 'submitOnChange'=>true),
                'options' => array ( 
                    '4' => 'Produktgruppe 1', 
                    '20' => 'Produktgruppe 2', 
                    '5' => 'Produktgruppe 3', 
                    '6'   => 'Produktgruppe 4', 
                ), 
            ),
            'produkt' => array (
                'label' => array ('Produkt', 'Wählen Sie ein Produkt aus.'),
                'eval' => array('tl_class' => 'w50'),
                'inputType' => 'select',
                'options_callback' => function () {
                    $options = array();
                    $data = \Database::getInstance()->execute("SELECT id, title FROM ctlg_produkte WHERE kategorie = '$kategorien' ORDER BY title");
                    while ($data->next())
                    {
                        $options[$data->id] = $data->title;
                    }
                    return $options;
                },
            ),
        ),
    );
    Hat jemand von euch eine Idee, wie ich den Wert des Feldes "kategorien" in die Datenbankabfrage in dem Feld "produkt" übergeben kann?

    LG,
    Dirk

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.803
    Partner-ID
    10107

    Standard

    Beim options_callback bekommst du als Parameter das DataContainer Objekt des aktuellen Eintrags übergeben. Dort kannst du theoretisch mit ->activeRecord->rsce_data auf die Daten des RSCE zugreifen.

  3. #3
    Contao-Fan Avatar von dirksche
    Registriert seit
    05.08.2009.
    Ort
    Grosslittgen
    Beiträge
    641

    Standard

    Hi Spooky,

    wie genau kann ich darauf zugreifen?

    So funktioniert es schon mal nicht:
    Code:
         'options_callback' => function () {
                    $options = array();
                    $data = \Database::getInstance()->execute("SELECT id, title FROM ctlg_produkte WHERE kategorie = '$kategorien->activeRecord->rsce_data' ORDER BY title");
                    while ($data->next())
                    {
                        $options[$data->id] = $data->title;
                    }
                    return $options;
                },
    LG,
    Dirk

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.803
    Partner-ID
    10107

    Standard

    Das DataContainer Objekt wird wie gesagt als Parameter an den Callback übergeben. Also zB:
    PHP-Code:
    'options_callback' => function ($dc) {
        
    $dc->activeRecord->


  5. #5
    Contao-Fan Avatar von dirksche
    Registriert seit
    05.08.2009.
    Ort
    Grosslittgen
    Beiträge
    641

    Standard

    So funzt es :-)

    Code:
                'options_callback' => function ($dc) {
                    $kategorie = $dc->activeRecord->rsce_field_kategorien ;
                    $options = array();
                    $data = \Database::getInstance()->execute("SELECT id, title FROM ctlg_produkte WHERE kategorie = '$kategorie' ORDER BY title");
                    while ($data->next())
                    {
                        $options[$data->id] = $data->title;
                    }
                    return $options;
                },
            ),

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •