Ergebnis 1 bis 10 von 10

Thema: Formular-Felder um eine Hilfefunktion erweitern

  1. #1
    Contao-Nutzer
    Registriert seit
    01.11.2012.
    Ort
    Kiel
    Beiträge
    109

    Standard Formular-Felder um eine Hilfefunktion erweitern

    Eine von mir betreute Webseite nutzt ein Formular, welches Felder enthält, die einer Erklärung bedürfen. Dabei soll das Formular so gestaltet sein, dass dazu kein "Erklärungs"-Feld über oder unter dem fraglichen Feld erzeugt wird, sondern es soll die Hilfe direkt neben der Feldbezeichnung oder dem Eingabefeld angezeigt werden - z.B. als kleines Icon, das der Besucher anklicken kann und welches dann ein Fenster mit einer Hilfe öffnet.

    Da ich dazu keine passende Erweiterung finden kann, habe ich mir überlegt, daraus ein kleines Projekt zu machen und meine erste Contao-Erweiterung zu schreiben. (Falls jemand eine passende Erweiterung kennt, nur her damit!)

    Ich habe mir das Ganze ungefähr so vorgestellt:
    Für die Formularfelder wird in der Datenbank ein neues Feld angelegt, das den Hilfetext enthält. Per DCA wird dafür eine Eingabemöglichkeit im Backend erstellt. (Das funktioniert bereits)
    Für das Formular selbst werden ebenfalls mehrere neue Felder in der Datenbank angelegt: wie soll der Link zur Hilfe aussehen (Text/Icon), wo soll er angezeigt werden (links/rechts von Label/Eingabefeld), wie soll er sich verhalten (per JS ein div o.ä. erzeugen/Link in einem neuen Fenster öffnen/...). Diese Optionen werden dann auch per DCA im Backend zur Verfügung gestellt.

    Soweit funktioniert es schon ganz gut, ich war erstaunt, wie einfach die Entwicklung von der Hand geht.

    Jetzt frage ich mich, wie ich die Darstellung im Frontend, also im Formuar, am sinnvollsten umsetze.
    Zwei Optionen habe ich bisher gefunden:
    1. Die Klassen FormTextField, FormCheckBox etc. pp. erweitern, um ihre generate()-Methoden anpassen zu können - denn der Hilfe-Link muss ja je nach Typ des Eingabefelds an einer anderen Stelle erzeugt werden.
    2. Per Hook auf loadFormField die Formularfelder direkt anpassen. Soweit ich das verstehe, wird der Hook vor dem parse() aufgerufen, also bevor die FormFields über ihr jeweiliges Template zu HTML-Code generiert werden. Hier könnte ich z.B. das Template austauschen; allerdings kann ich nicht direkt den HTML-Code der bereits geparse()-ten FormFields modifizieren, richtig?


    Mir scheint Option 1 sauberer zu sein. Hätte aber den Nachteil, dass andere Erweiterungen, die mit den Klassen FormTextField etc. pp. arbeiten, dann nicht mit meiner Erweiterung zusammenarbeiten würden, oder?


    Würde mich freuen, wenn einer von euch erfahrenen Entwicklern einen Tip geben könnte, wie ich das Vorhaben richtig umsetze, oder ob ich völlig falsch herangehe.


    MfG
    Martin

  2. #2
    Contao-Urgestein
    Registriert seit
    03.06.2010.
    Ort
    Wuppertal
    Beiträge
    2.149
    User beschenken
    Wunschliste

    Standard

    [helpmessage]

    Soweit ich weiß funktioniert die auch immer noch.
    Ansonsten wird sie dir wohl als gute Basis dienen können.

  3. #3
    Contao-Nutzer
    Registriert seit
    01.11.2012.
    Ort
    Kiel
    Beiträge
    109

    Standard

    Super, vielen Dank!
    Im Prinzip ist das genau die Erweiterung, die ich gesucht habe. Vermutlich habe ich sie nicht gefunden, weil ich in der Erweiterungsliste den Filter auf "kompatibel zu Contao 2.11.6" gestellt hatte. Sie scheint aber problemlos mit dieser Version zu laufen.

    Die Erweiterung macht es übrigens nach der "Möglichkeit 2", über die ich oben sinniert hatte. Ich werde sie aber noch ein wenig anpassen, um längere Texte und auch HTML eingeben zu können.

  4. #4
    Contao-Nutzer Avatar von HADT
    Registriert seit
    03.03.2011.
    Beiträge
    21

    Standard

    Hallo, hats schon jemand mit Contao3 versucht? Oder gibt es bereits eine passende Alternative?

  5. #5
    Flie...
    Gast

    Standard

    @terminal42-Team:
    Wird die Erweiterung irgendwann auf C3.x migriert?
    Leider eine Fehlermeldung (ist ja auch nicht freigegeben):
    Code:
    [25-Jun-2013 18:24:46 Europe/Berlin] PHP Fatal error:  Class 'HelpMessage' not found in /var/www/web238/html/cms/system/modules/core/library/Contao/System.php on line 110
    [25-Jun-2013 18:24:47 Europe/Berlin] 
    PHP Warning: in_array() expects parameter 2 to be array, null given in /var/www/web238/html/cms/system/modules/core/library/Contao/System.php on line 110
    #0 [internal function]: __error(2, 'in_array() expe...', '/var/www/web238...', 110, Array)
    #1 /var/www/web238/html/cms/system/modules/core/library/Contao/System.php(110): in_array('getInstance', NULL)
    #2 /var/www/web238/html/cms/system/modules/core/classes/FrontendTemplate.php(78): Contao\System->import('HelpMessage')
    #3 /var/www/web238/html/cms/system/modules/core/pages/PageRegular.php(183): Contao\FrontendTemplate->output(false)
    #4 /var/www/web238/html/cms/system/modules/core/pages/PageError404.php(94): Contao\PageRegular->generate(Object(Contao\PageModel))
    #5 /var/www/web238/html/cms/index.php(71): Contao\PageError404->generate(false)
    #6 /var/www/web238/html/cms/index.php(415): Index->run()
    #7 {main}
    Dankeschön für eine Antwort...

  6. #6
    Contao-Fan
    Registriert seit
    02.03.2013.
    Beiträge
    436

    Standard

    unter 3.1 einfach den autoload creator nutzen, dann funktioniert die erweiterung (evtl. fehlerhaft, hab nur kurz reingeschaut, aber grundfunktion war vorhanden)

  7. #7
    Flie...
    Gast

    Standard

    Zitat Zitat von wulf Beitrag anzeigen
    unter 3.1 einfach den autoload creator nutzen, dann funktioniert die erweiterung (evtl. fehlerhaft, hab nur kurz reingeschaut, aber grundfunktion war vorhanden)
    Erweiterung läuft jetzt zwar fehlerfrei jedoch ist keine korrekte Funktion (zumindest bei mir) gegeben.

  8. #8
    Contao-Nutzer Avatar von kretschi
    Registriert seit
    19.06.2009.
    Ort
    Ulm
    Beiträge
    98

    Standard

    Ich hänge mich hier mit dran - mittlerweile mit 3.2.3 getestet - wenn man die autoload Dateien erstellen lässt läuft das Modul - allerdings wird nichts angezeigt...
    Damit ohne Funktion. Weiß jemand eine Alternative für 3.2.x? Habe min. ein Formular mit mehreren Feldern die bereits jetzt in 3-5 Spalten stecken und so eine schöne Infoblase wäre das richtige dafür, statt Lange "hilfstexte" neben dem Feld als "normaler Text"
    Gruß kretschi

  9. #9
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.719
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von kretschi Beitrag anzeigen
    Ich hänge mich hier mit dran - mittlerweile mit 3.2.3 getestet - wenn man die autoload Dateien erstellen lässt läuft das Modul - allerdings wird nichts angezeigt...
    was bedeutet "nichts angezeigt"?

    a) es steht nix im Quelltext - kein Javascript-Einbindung keine "versteckten" Text-Blöcke?

    b) JS + Text stehen im Quelltext aber die "popen" nicht auf?

    ... wie immer: Beispielseite vorhanden?

  10. #10
    Contao-Nutzer Avatar von kretschi
    Registriert seit
    19.06.2009.
    Ort
    Ulm
    Beiträge
    98

    Standard

    "nichts angezeigt" bedeutet in meinem Fall - deine Version: b)
    Im Quelltext ist alles vorhanden - soweit ich das beurteilen kann - allerdings "poppt" es eben nicht auf.
    Gruß kretschi

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
  •