Ergebnis 1 bis 6 von 6

Thema: Select-Feld und loadFormField

  1. #1
    Contao-Nutzer
    Registriert seit
    03.02.2010.
    Beiträge
    21

    Standard Select-Feld und loadFormField

    Hallo zusammen,

    ich versuche im Moment Folgendes und es will nicht klappen:

    Aufgabe:
    • Formular wird geladen
    • eine GET-Variable wird ausgelesen
    • angezeigter Wert des Select-Felds ändert sich je nach Wert der Variable


    Problem:
    Ich wollte das Ganze "elegant" über loadFormField lösen und den Select entsprechend ändern, aber irgendwie find ich in dem Widget-Objekt den passenden Parameter nicht. Ich habe mir auch schon mal das Objekt genauer mit var_dump angesehen, aber da stecken so viele Daten drin, dass ich ein wenig die Übersicht verliere.

    Frage:
    Bin ich mit loadFormField völlig auf dem Holzweg? Wenn ja, wie kann ich das sonst regeln? Wenn nein, welche Variable muss ich anpassen?

    Bin für jeden Tipp dankbar!

    Liebe Grüße
    Thomas

  2. #2
    Contao-Nutzer
    Registriert seit
    22.06.2009.
    Ort
    St.Pauli
    Beiträge
    217

    Standard

    Hi Thomas,
    Ich wollte das Ganze "elegant" über loadFormField lösen
    sehr lobenswert ;-)

    Am besten nochmal einen scharfen Blick auf Leo's Beispiel werfen (die sind zwar knapp gehalten, aber dafür auch präzise) und dann in der Api einen auf die Klasse Widget und insbesondere ihre Variablen. Klingelts? Sonst meld dich gern nochmal...

    cheers
    Antipitch
    "Some people, when confronted with a problem, think 'I know, I’ll use regular expressions.' Now they have two problems." Jamie Zawinski

  3. #3
    Contao-Nutzer
    Registriert seit
    03.02.2010.
    Beiträge
    21

    Daumen runter

    Hallo Antipitch (interessanter Name),

    es hat nicht nur geklingelt, sondern gegongt Auf die Idee mit der API hätte ich auch selber kommen müssen - das kommt davon wenn man keine Pausen beim Arbeiten einlegt
    Leider komme ich aber immer noch nicht ganz weiter. Ich nehme mal an, dass Du auf das Attributes und Options Array angespielt hast!? Ich möchte gleich im Anschluss mal zeigen, was ich als Lösung versucht habe, aber leider kommt bei der HTML-Ausgabe gar nichts an

    So sieht es im Moment aus:
    Code:
    public function loadFormField(Widget $objWidget, $intForm, $arrFormData)
    {
    	if ($intForm == FORMULARNAME')
    	{
    		if ($objWidget->name == 'FELDNAME')
    		{
    			foreach ($objWidget->options as $key => $value)
    			{
    				if ($value['value'] == 'OPTIONSWERT')
    				{
    					$objWidget->options[$key]['attributes'][] = 'selected';
    				}
    			}
    		}
    	}
    		
    	return $objWidget;
    }
    Auch wenn ich mir gerade vorkomme, als würde ich das erste Mal in meinem Leben programmieren, aber hier stehe ich gerade so was von auf dem Schlauch. Alle Schleifen und die if-Klausel funktionieren, aber die Zuweisung will nicht. Hab es zum Testen sogar mal mit $objWidget->options[$key]['value'] = 'TEST' versucht, aber auch hier keine Übernahme in das Objekt.
    Wahrscheinlich übersehe ich hier selbst mit Blindenstock noch was, aber was soll's. Ich spring einfach mal über meinen Schatten und frage dennoch

    Grüße
    Thomas

    PS: Habe gerade noch die Methode addAttributes entdeckt, aber weiter komme ich damit leider auch nicht
    Geändert von sanshao (04.02.2010 um 15:24 Uhr)

  4. #4
    Contao-Nutzer
    Registriert seit
    03.02.2010.
    Beiträge
    21

    Daumen hoch Geschafft! :)

    So, nachdem ich jetzt sämtlichen Quellcode zu Widget und Select durch bin habe ich die Lösung gefunden und sie war wie immer einfacher als gedacht
    Der Vollständigkeit halber werde ich den fertigen Code hier noch rein setzen. Falls jemand noch einen besseren Weg weiß, bin ich natürlich offen dafür

    PHP-Code:
    public function loadFormField(Widget $objWidget$strForm$arrFormData)
    {
        
    // Formularnamen prüfen und nur bei gewünschtem greifen
        
    if ($strForm == 'FORMULARNAME')
        {
            
    // Auf das korrekte Feld an Hand Name prüfen
            
    if ($objWidget->name == 'FELDNAME')
            {
                
    // GET-String aus URL auslesen (?GETSTRING=NAMEXX)
                
    $strSelect $_GET['GETSTRING'];
                
                
    // Per switch die Möglichkeiten durchgehen
                
    switch ($strSelect)
                {
                    case 
    'NAME1':
                        
    $strSelected 'NAME1';
                        break;;
                    case 
    'NAME2':
                        
    $strSelected 'NAME2';
                        break;;
                    default:
                        
    $strSelected NULL;
                }
                
                
    // 'value' mit entsprechendem Wert setzen, damit die Option ein "selected bekommt"
                
    $objWidget->__set('value'$strSelected);
            }
        }
        
        
    // Widget Objekt wieder zurück geben
        
    return $objWidget;

    Danke für den Denkanstoß

    Grüße
    Thomas
    Geändert von sanshao (04.02.2010 um 17:02 Uhr)

  5. #5
    Contao-Nutzer
    Registriert seit
    22.06.2009.
    Ort
    St.Pauli
    Beiträge
    217

    Standard

    Hi Thomas,
    bitte, geht doch .

    Nur den direkten Zugriff auf die $_GET Variable solltest du vermeiden. Hier verarbeitest du zwar nichts großartig weiter, aber warum die TL (Sicherheits-)Möglichkeiten nicht konsequent nutzen. Kommt natürlich immer drauf an, was deine eigene Klasse können soll, aber wenn sie z.B. die Klasse System erweitert, hast du schon Zugriff auf ziemlich vieles. U.a. auf die Methoden der Input-Klasse:
    PHP-Code:
    $strSelect $this->Input->get(WERT); 

    cheers
    Antipitch
    "Some people, when confronted with a problem, think 'I know, I’ll use regular expressions.' Now they have two problems." Jamie Zawinski

  6. #6
    Contao-Nutzer
    Registriert seit
    03.02.2010.
    Beiträge
    21

    Standard

    Hi Antipitch,

    ich dachte mir schon fast, dass es dafür auch eine Methode gibt, aber da ich im Index vom Buch auf die Schnelle nichts gefunden hatte, hab ich es so geregelt.
    Aber der Tipp mit System ist gut. Ich werde mir die Klasse nochmal genau anschauen.

    Cheers mate
    Thomas

Aktive Benutzer

Aktive Benutzer

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

Ähnliche Themen

  1. Extension um select-Feld erweitern
    Von Tina im Forum Entwickler-Fragen
    Antworten: 2
    Letzter Beitrag: 08.10.2010, 14:07
  2. Select-Feld in Abhängigkeit von anderem Select-Feld füllen
    Von Bandyt im Forum Entwickler-Fragen
    Antworten: 1
    Letzter Beitrag: 05.09.2010, 21:07
  3. Auswahlmöglichkeiten in Select-Feld importieren
    Von jonaspas im Forum Formulare
    Antworten: 0
    Letzter Beitrag: 10.07.2010, 10:57

Lesezeichen

Lesezeichen

Berechtigungen

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