Contao-Camp 2024
Ergebnis 1 bis 2 von 2

Thema: Custom Elements Select options_callback gibt nur den Value im Frontend aus

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

    Standard Custom Elements Select options_callback gibt nur den Value im Frontend aus

    Hallo liebe Community,

    ich habe ein Custom Element mit einem Select Feld, welches mit Daten aus einer Catalog Tabelle gefüllt wird:
    Code:
            'category' => array (
                'label' => array ('Kategorie', 'Wählen Sie als erstes eine Kategorie.'),
                'inputType' => 'select',
                'eval' => array('tl_class' => 'w50', 'submitOnChange'=>true),
    			'options_callback' => function () {
    				$options = array();
    			    $categorydata = \Database::getInstance()->execute("SELECT title, output_name FROM ctlg_product_categories ORDER BY title");
    			    while ($categorydata->next())
    			    {
    			        $options[$categorydata->title] = $categorydata->output_name;
    			    }
    			    return $options;
    			}
            ),
    Das funktioniert soweit auch wie gewünscht.
    Allerdings wird bei der Frontend Ausgabe mit $this-category nur der Value ($categorydata->title) ausgegeben.
    Ich möchte aber im Frontend den Wert $categorydata->output_name ausgeben.

    Hat jemand von euch einen Tipp für mich?

    Viele Grüße
    Dirk

  2. #2
    Contao-Fan Avatar von Fehrmann
    Registriert seit
    04.07.2009.
    Ort
    Wismar
    Beiträge
    580
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hi,

    die DCA-Definition legt erstmal nur die Darstellung für das Backend fest. Deine Zuweisung von `$categorydata->output_name` hat keine Auswirkung auf das Frontend. Beim speichern des Datensatzes im Backend wird in der Tabelle beim Feld `category` der Wert von `$categorydata->title` gespeichert. Du musst in deinem Frontend-Controller/Modul basierend auf diesem Wert dir den passenden Datensatz aus der Tabelle suchen.

    Ich würde eher mit der ID arbeiten und das DCA vereinfachen indem ich den `options_callback` ersetze, z.B. so:

    PHP-Code:
    'foreignKey' => 'ctlg_product_categories.output_name' 
    Den Datensatz im Frontend finden, könnte so aussehen (falls du ein passendes Model hast):

    PHP-Code:
    TabelleModel::findByPk($this->category); 
    Alles ungetestet.

    Viele Grüße
    René
    Software-Entwickler Backend/Frontend

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
  •