Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Themes & Theming ›

Drupal 8 | Custom contact forms mit getForm() rendern?

Eingetragen von marco-s (21)
am 07.03.2016 - 15:26 Uhr in
  • Themes & Theming
  • Drupal 8.x

Hallo zusammen

Ich habe im Backend unter "Contact forms" ein eigenes Formular für Feedbacks erstellt (Machine name: form_feedback)
Das Formular möchte ich an einem bestimmten Ort platzieren und will das nun via eine Preprocess-Funktion rendern und dem Template übergeben.
Grundsätzlich sollte man das mit der getForm() Funktion tun können?! Leider funktioniert das nicht (bei eigenen programmierten Formularen hat es bis jetzt wunderbar funktioniert)

Wie stellt man das aber mit Formularen aus dem Backend an?

<?php

//Versuch 1
$form = \Drupal::formBuilder()->getForm('form_feedback');

//Versuch 2
$form_object = new \Drupal\contact\Entity\ContactForm(array('id'=>'form_feedback'));
$form = \Drupal::formBuilder()->getForm($form_object);
?>

Danke und Gruss
Marco

‹ Anfängerfragen zum Bootstrap Theme Neues Theme und Inhalt ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

warum so kompliziert?

Eingetragen von ronald (3857)
am 07.03.2016 - 17:23 Uhr

So sieht das Formular aus:

<form class="contact-message-siteinfo-form contact-message-form contact-form" data-drupal-selector="contact-message-siteinfo-form" action="/contact" method="post" id="contact-message-siteinfo-form" accept-charset="UTF-8" data-drupal-form-fields="edit-subject-0-value,edit-message-0-value,edit-copy,edit-submit,edit-preview">
  <div id="edit-name" class="js-form-item form-item js-form-type-item form-type-item js-form-item-name form-item-name">
      <label for="edit-name">Ihr Name</label>
        admin
        </div>
<div id="edit-mail" class="js-form-item form-item js-form-type-item form-type-item js-form-item-mail form-item-mail">
      <label for="edit-mail">Ihre E-Mail-Adresse</label>
        ronald@prohelpnet.de
        </div>
<div class="field--type-string field--name-subject field--widget-string-textfield js-form-wrapper form-wrapper" data-drupal-selector="edit-subject-wrapper" id="edit-subject-wrapper">      <div class="js-form-item form-item js-form-type-textfield form-type-textfield js-form-item-subject-0-value form-item-subject-0-value">
      <label for="edit-subject-0-value" class="js-form-required form-required">Betreff</label>
        <input class="js-text-full text-full form-text required" data-drupal-selector="edit-subject-0-value" type="text" id="edit-subject-0-value" name="subject[0][value]" value="" size="60" maxlength="100" placeholder="" required="required" aria-required="true">

        </div>

  </div>
<div class="field--type-string-long field--name-message field--widget-string-textarea js-form-wrapper form-wrapper" data-drupal-selector="edit-message-wrapper" id="edit-message-wrapper">      <div class="js-form-item form-item js-form-type-textarea form-type-textarea js-form-item-message-0-value form-item-message-0-value">
      <label for="edit-message-0-value" class="js-form-required form-required">Nachricht</label>
        <div class="form-textarea-wrapper">
  <textarea class="js-text-full text-full form-textarea required resize-vertical" data-drupal-selector="edit-message-0-value" id="edit-message-0-value" name="message[0][value]" rows="12" cols="60" placeholder="" required="required" aria-required="true"></textarea>
</div>

        </div>

  </div>
<input data-drupal-selector="edit-contact-message-[formname}-form-form-token" type="hidden" name="form_token" value="7We-e5eyXjdyK7rxIA9stHgsDDaKY28hFfhNA_TpaUA">
<input data-drupal-selector="edit-contact-message-[formname}-form" type="hidden" name="form_id" value="contact_message_{formname}_form">
<div class="js-form-item form-item js-form-type-checkbox form-type-checkbox js-form-item-copy form-item-copy">
        <input data-drupal-selector="edit-copy" type="checkbox" id="edit-copy" name="copy" value="1" class="form-checkbox">

        <label for="edit-copy" class="option">Kopie an dich selbst senden</label>
      </div>
<div data-drupal-selector="edit-actions" class="form-actions js-form-wrapper form-wrapper" id="edit-actions"><input data-drupal-selector="edit-submit" type="submit" id="edit-submit" name="op" value="Nachricht senden" class="button button--primary js-form-submit form-submit">
<input data-drupal-selector="edit-preview" type="submit" id="edit-preview" name="op" value="Vorschau" class="button js-form-submit form-submit">
</div>

</form>

Damit müsste es sich doch hervorragend stylen lassen, ohne dass man Code erzeugt.
Alles nur mit CSS.

  • Anmelden oder Registrieren um Kommentare zu schreiben

statische Lösung?!

Eingetragen von marco-s (21)
am 08.03.2016 - 08:53 Uhr

Hallo Roland

Vielen Dank für deine Antwort. Stimmt, das könnte man natürlich so machen. Das ist dann aber eine ziemlich statische Lösung. Es sollte doch auch möglich sein, die Formulare aus dem Backend irgendwo auf der Seite platzieren zu können?!

  • Anmelden oder Registrieren um Kommentare zu schreiben

was willst du denn tun?

Eingetragen von ronald (3857)
am 08.03.2016 - 09:18 Uhr

und warum meinst du, kannst du es nicht?

Kurzer Hinweis: mein Name ist Ronald.

Du kannst doch immer stylen, wie es dir behagt.

Und wenn du einen anderen container hast, kannst du diesen stylen.

CSS heißt doch deshalb cascading, weil du es immer und überall überschreiben kannst, wenn du das dringende Bedürfnis dazu hast.

Such dir den Selektor, oder die Selektoren aus, die du stylen möchtest, und tobe dich aus.

  • Anmelden oder Registrieren um Kommentare zu schreiben

...

Eingetragen von marco-s (21)
am 09.03.2016 - 15:24 Uhr

Hallo Ronald (sorry, dass ich Roland geschrieben hatte)

Zitat:

und warum meinst du, kannst du es nicht?

Klar wäre deine Variante eine mögliche Lösung. Aber wenn ich von Drupal aus doch schon die Möglichkeit habe, mir im Backend ein Formular zusammenzuklicken, sollte ich doch das auch irgendwo auf der Seite platzieren können. Für andere Formulare schreibe ich das HTML ja auch nicht von Hand, sondern generiere es mir mit der Drupal-Konsole, damit ich ein schlankes Modul habe, welches mir den Output generiert. Ums Stylen mit CSS geht es mir hier nicht.

Meiner Meinung nach muss es von Drupal 8 aus doch eine Möglichkeit geben, wie man die erstellen Formulare ansprechen/rendern kann.

  • Anmelden oder Registrieren um Kommentare zu schreiben

das geht doch

Eingetragen von ronald (3857)
am 09.03.2016 - 21:12 Uhr

ich habe es zwar noch nicht selbst gemacht, man kann jedoch das Formular in einem Block ausgeben, oder wenn du es aufrufst, erscheint es im content-Block.

Du brauchst keinen HTML-Code zu schreiben, kannst dies jedoch tun.
Du musst auch die Felder nicht mit CSS gestalten, kannst es aber für jedes Feld tun.

Ich verstehe nicht, wo du hängst.

Wenn du das contact form ausgeben möchtest, klickst du einfach auf den Kontakt-Link, und wenn der nicht da ist, legst du einen Menüpunkt mit dem Link /contact an.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Rolle erstellen nicht zu finden
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
Weiter

Neue Kommentare

  • Inzwischen sind wir bei
    vor 1 Woche 3 Tagen
  • Migrieren von D7 auf D8/ D10/ D11
    vor 1 Woche 4 Tagen
  • melde mich mal wieder, da ich
    vor 9 Wochen 1 Tag
  • Hey danke
    vor 9 Wochen 2 Tagen
  • Update: jetzt gibt's ein
    vor 9 Wochen 2 Tagen
  • Hallo, im Prinzip habe ich
    vor 10 Wochen 4 Stunden
  • Da scheint die Terminologie
    vor 10 Wochen 7 Stunden
  • Kannst doch auch alles direkt
    vor 10 Wochen 4 Tagen
  • In der entsprechenden View
    vor 10 Wochen 4 Tagen
  • Dazu müsstest Du vermutlich
    vor 10 Wochen 4 Tagen

Statistik

Beiträge im Forum: 250236
Registrierte User: 20463

Neue User:

  • ocvk2810
  • marouane.blel
  • capilclinic

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 37 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association