Ursprüngliche Pflichtfelder "betreff" und Nachricht" im Kontaktformular werden trotz Override verlangt

  • Hallo zusammen,


    ich hänge hier gerade bei einem Override der Kontakt-Komponente.


    Ich habe die default.php folgendermaßen geändert:

    So weit, so gut. das Formular wird mir angezeigt wie ich es brauche.


    ABER, nach dem Absenden erhalte ich die Fehlermeldung dass der Betreff und die Nachricht benötigt werden, da es Pflichtfelder sind. Die beiden Felder sind aber nicht in meinem Override enthalten. Wo holt er sich das her und vor allem wie kann ich das unterbinden?


    In der Komponente im Backend selbst kann ich die Felder ja nicht bearbeiten/sehen.


    Auch der Tipp aus einem anderen Beitrag, folgenden Code einzufügen half nicht.


    Code
    $this->form->setFieldAttribute('contact_subject', 'default', ' ');
    $this->form->setFieldAttribute('contact_subject', 'type', 'hidden');

    Danke schon einmal für eure Unterstützung!

  • Für solche Fälle nutzt ich eine Erweiterung wie diese: https://www.fox.ra.it/


    Da kannst alle möglichen Felder anlegen, Pflichtfelder bestimmen und die Reihenfolge relativ schnell ändern durch einfaches grafische Verschieben. Und das alles recht schnell und ohne Eingriff in den Code und ohne die Nachteile von Overrides.


    Das ist mit dem Joomla-Kontaktformular so ohne weiteres nicht möglich.

  • Die Zeile 15 beginnt mit einem

    Code
    */

    Das ist sicher falsch.

    Hast du "Fehler berichten" auf "Maximium"? Das sollte man bei solchen Spielereien immer setzen bis man fertig ist.

    Die beiden Felder sind aber nicht in meinem Override enthalten.

    Genau das ist dein Fehler.

    Du renderst später das Feld subject gar nicht. Das muss im späteren Code innerhalb <form> natürlich trotzdem drinnen sein.


    Su setzt es auf hidden, damit der Besucher es nicht sieht und befüllst es, damit es nicht leer ist. Weil es ein Pflichtfeld ist, das irgendeinen Inhalt braucht.

    Trotzdem muss es im Formular vorhenden sein, halt unsichtbar. Sonst macht das alles keinen Sinn.

    Wo holt er sich das her und vor allem wie kann ich das unterbinden?

    Er holt es sich bei der server-seitigen Validierung nochmals aus einer XML-Datei, die du aber nicht verändern darfst. Diese kümmert sich eben genau darum, was du gerade erlebst, dass es nicht reicht die Felder einfach im Frontend zu entfernen.

  • Die Zeile 15 beginnt mit einem

    Code
    */

    Das hatte ich zuletzt ausgeklammert, weil dieser Lösungsvorschlag aus einem anderen Beitrag nicht klappte.


    Su setzt es auf hidden, damit der Besucher es nicht sieht und befüllst es, damit es nicht leer ist. Weil es ein Pflichtfeld ist, das irgendeinen Inhalt braucht.

    Trotzdem muss es im Formular vorhenden sein, halt unsichtbar. Sonst macht das alles keinen Sinn.


    Das ist die Lösung. Das hatte ich aber auch schon vergeblich über folgende Zeilen unterhalb des "Buttons" versucht:


    Code
    <input type="hidden" name="contact_subject" value="Anfrage" />
    <input type="hidden" name="contact_message" value=" " />

    Der Teufel steckt allerdings wie immer im Detail!

    Mein Fehler war das "schnelle" dahin tippen. Nachdem ich mir im Original-Quellcode jetzt einmal die Feldbezeichnungen richtig angeschaut habe ist die Lösung doch sehr simpel.


    Die versteckten Formularfelder müssen natürlich richtig :rolleyes: bezeichnet werden:

    Code
    <input type="hidden" name="jform[contact_subject]" value="Anfrage" />
    <input type="hidden" name="jform[contact_message]" value=" " />

    Manchmal hilft es schon einmal mit jemanden darüber zu sprechen.

    Danke!


    Ach, habe vergessen den Beitrag als "erledigt" zu markieren. Fand die alte Bezeichnung "gelöst" aber treffender. ;)

  • Machs gleich so statt hart-kodiert. Dafür sind die setAttribue-Zeilen ja auch da.

    PHP
    <?php echo $this->form->getInput('contact_subject'); ?>
    <?php echo $this->form->getInput('contact_message'); ?>