Ergebnis 1 bis 11 von 11

Thema: Eigenes Formularfeld zur Verwendung im Formulargenerator

  1. #1
    Contao-Nutzer
    Registriert seit
    29.03.2012.
    Beiträge
    60

    Standard Eigenes Formularfeld zur Verwendung im Formulargenerator

    Irgendwie komme ich gerade nicht richtig weiter. Ich möchte gerne ein eigenes Formularfeld mit einem speziellen SelectMenu. Dazu habe ich bereits ein eigens Modul erstellt und folgendes getan:

    In der config.php
    PHP-Code:
    /**
     * Forms
     */
    array_insert($GLOBALS['BE_FFL'], 0, array
    (
        
    'speziellesSelectMenu' => 'SelectMenuSpeziell'
    )); 
    Die Klasse:
    PHP-Code:
    class SelectMenuSpeziell extends \FormSelectMenu
    {

        
    /**
         * Generate the widget and return it as string
         * @return string
         */
        
    public function generate()
        {
            
    $strOptions '';
            
    $strClass 'select';
            
    $blnHasGroups false;

            
    $this->arrOptions = \Klasse::getSpecialOptions(); 
            [...]


    Das Formularfeld wird im Backend im Formulargenerator leider nicht angezeigt. Wo ist mein Fehler?

  2. #2
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.943

    Standard

    autoload creator laufen lassen? contao cache gelöscht?
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

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

    Support Contao

    Standard

    Hallo,

    wenn es sich dabei um ein Frontend-Formular-Widget handelt, dann ist '$GLOBALS['BE_FFL']' falsch.

    Hier muss es ein "$GLOBALS['TL_FFL']' sein.

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

  4. #4
    Contao-Nutzer
    Registriert seit
    29.03.2012.
    Beiträge
    60

    Standard

    Manchmal kann es so einfach sein, danke jetzt funktioniert es einwandfrei :-)

    Wenn ich dem Select-Menü nun noch einen leeren Wert wie "----hier auswählen----" hinzufügen möchte, wie mache ich das?

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

    Support Contao

    Standard

    Hallo,

    so ins Blaue würde ich sagen, wie alle anderen Einträge auch.

    Ich verwende dann meist ein Value von 0 und prüfe das entsprechend in der späteren Bearbeitung.

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

  6. #6
    Contao-Nutzer
    Registriert seit
    29.03.2012.
    Beiträge
    60

    Standard

    Alles klar, vielen Dank!

  7. #7
    Contao-Nutzer
    Registriert seit
    29.03.2012.
    Beiträge
    60

    Standard Eigenes Select-Menü

    Meine Klasse funktioniert nun in der Anzeige wie gewünscht. Leider habe ich das Problem, dass die Validierung der Daten nicht richtig erfolgt. Zumindest erhalte ich immer eine Fehlermeldung, dass die Eingabe ungültig war. Die '102' ist der übermittelte 'value'-Wert der Option.

    Meldung:
    Code:
    Warning: Invalid argument supplied for foreach() in system/modules/core/library/Contao/Widget.php on line 1174
    #0 system/modules/core/library/Contao/Widget.php(1174): __error(2, 'Invalid argumen...', '/www/htdocs/w00...', 1174, Array)
    #1 system/modules/core/forms/FormSelectMenu.php(126): Contao\Widget->isValidOption('102')
    #2 system/modules/core/forms/Form.php(174): Contao\FormSelectMenu->validate()
    #3 system/modules/core/classes/Hybrid.php(218): Contao\Form->compile()
    #4 system/modules/core/forms/Form.php(56): Contao\Hybrid->generate()
    #5 system/modules/core/library/Contao/Controller.php(295): Contao\Form->generate()
    #6 system/modules/core/pages/PageRegular.php(138): Contao\Controller->getFrontendModule(Object(Contao\ModuleModel), 'right')
    #7 index.php(249): Contao\PageRegular->generate(Object(Contao\PageModel), true)
    #8 index.php(432): Index->run()
    #9 {main}
    FormSelectMenu.php - hier wird der Fehler ausgeben:
    PHP-Code:
                    // Check for a valid option (see #4383)
            
    if (!empty($varInput) && !$this->isValidOption($varInput))
            {
                
    $this->addError(sprintf($GLOBALS['TL_LANG']['ERR']['invalid'], (is_array($varInput) ? implode(', '$varInput) : $varInput)));
            } 
    Hier die Überprüfung in der Widget.php
    PHP-Code:
            protected function isValidOption($varInput)
        {
            if (!
    is_array($varInput))
            {
                
    $varInput = array($varInput);
            }

            
    // Check each option
            
    foreach ($varInput as $strInput)
            {
                
    $blnFound false;

                foreach (
    $this->arrOptions as $v)
                {
                    
    // Single dimensional array
                    
    if (array_key_exists('value'$v))
                    {
                        if (
    $strInput == $v['value'])
                        {
                            
    $blnFound true;
                        }
                    } 
    Ich möchte schlicht alle Optionen des Select-Menüs vorgeben. Was mache ich falsch?

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

    Support Contao

    Standard

    Hallo,

    ist mit den gegebenen Infos schwer zusagen. Ich vermute, das er in der inneren foreach-Schleife (Funktion isValidOption) aussteigt und nach der Fehlermeldung zu urteilen, das der Wert 'this->arrOptions' leer ist.

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

  9. #9
    Contao-Nutzer
    Registriert seit
    29.03.2012.
    Beiträge
    60

    Standard

    Die Vermutung habe ich auch. Ich nutze den Formulargenerator und binde dort das Select-Menü über Contao ein. Ist doch komisch, dass die Werte dann im Frontend zur Auswahl anzeigt werden, aber zu Validierung fehlt etwas? Ich habe mir den Aufbau des Array's $this->arrOptions bereits angesehen und da ist alles gleich.

    Normalerweise werden die Optionen einzeln von mir eingegeben und in der Datenbank gespeichert. Kann es sein, dass bei der Überprüfung in der Datenbank nach den Werten gesucht wird und wenn diese nicht vorhanden sind, dass es dann zu der Fehlermeldung kommt?

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

    Support Contao

    Standard

    Hi,

    so aus dem Stand fällt mir nix ein.

    Wenn du magst kannst du mir die entsprechenden Dateien zukommen lassen, dann kann ich das hier bei mir mal laufen lassen.

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

  11. #11
    Contao-Nutzer
    Registriert seit
    29.03.2012.
    Beiträge
    60

    Standard

    Fehler gefunden

    $this->arrOptions habe ich in der generate()-Methode überschrieben, richtig ist es in der __set()-Methode.

    Vielen Dank für die Hilfe!

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
  •