ProcessWire - Formulare

Aus Wikizone
Version vom 10. Oktober 2018, 13:17 Uhr von 93.208.102.183 (Diskussion) (Die Seite wurde neu angelegt: „== Links == https://processwire.com/talk/topic/14206-contact-form-tutorial/ Mit Google ReCaptcha == Beispiele == === Einfaches Formular (ohne Spamschutz)===…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Links

https://processwire.com/talk/topic/14206-contact-form-tutorial/ Mit Google ReCaptcha

Beispiele

Einfaches Formular (ohne Spamschutz)

<?php namespace ProcessWire;

function renderContactForm($backend_email, $subject) {

 $out = ;
 $modules = wire('modules'); // get access to pw modules object
 $input = wire('input');
 $sanitizer = wire('sanitizer');
 // Create the new <form>
 $form = $modules->get("InputfieldForm"); // get InputfieldForm Object
 $form->action = "./";
 $form->method = "post";
 $form->attr("id+name",'contact-form');

// Set markup for form elements

 $form->setMarkup(array(

'list' => "

{out}

", 'item' => "

{out}

",

   //'item_label' => "<label for='{for}'>{out}</label>",
   'item_label' => "", // no label markup for this form
   'item_content' => "{out}",

'item_error' => "

{out}

", 'item_description' => "

{out}

", 'item_head' => "

{out}

", 'item_notes' => "

{out}

",

 ));

// Set classes for form elements

 $form->setClasses(array(
   'list' => 'form-list',
   'list_clearfix' => ,
   'item' => '{class}',
   'item_required' => 'required',
   'item_error' => ,
   'item_collapsed' => ,
   'item_column_width' => ,
   'item_column_width_first' => 
 ));

// New field: First name

 $field = $modules->get("InputfieldText");
 $field->label = __("Name");
 $field->attr([
   'id+name' => 'name',
   'placeholder' => 'Ihr Name',
   'class' => 'text'
   ]);
 $field->required = 1;
 $form->append($field);

// New field: E-Mail

 $field = $modules->get("InputfieldEmail");
 $field->label = __("E-mail");
 $field->attr([
   'id+name' => 'email',
   'placeholder' => 'Ihre E-Mail Adresse',
   'class' => 'text'
   ]);
 $field->required = 1;
 $form->append($field);

// New field: Phone

 $field = $modules->get("InputfieldText");
 $field->label = __("Telefon");
 $field->attr([
   'id+name' => 'phone',
   'placeholder' => 'Ihre Telefonnummer',
   'class' => 'text'
   ]);
 $field->required = 1;
 $form->append($field);

// New field: Message

 $field = $modules->get("InputfieldTextarea");
 $field->label = __("Nachricht");
 $field->attr([
   'id+name' => 'message',
   'placeholder' => 'Ihre Nachricht',
   'class' => 'textarea'
   ]);
 $field->required = 1;
 $form->append($field);


 // SUBMIT button!
 $submit = $modules->get("InputfieldSubmit");
 $submit->attr("id+name", "submit");
 $submit->attr("class", "submit");
 $form->append($submit);
 // POST request, process the form
 if($input->post->submit) {
     $form->processInput($input->post);
     $name = $sanitizer->text($input->post->firstname);
     $email = $sanitizer->email($input->post->email);
     $message = $sanitizer->text($input->post->message);
     $phone = $sanitizer->text($input->post->phone);
     // ERRORS...
     if($form->getErrors()) {
       $out .= $form->render();
     } else {
       // FORM OK...
     	// Process the form here!
       $mail = wireMail();
       $mail->to($backend_email)->from($email);
       $mail->subject($subject);


       $body = "Name: " . $firstname . "\n";
       $body .= "E-Mail: " . $email . "\n";
       $body .= "Telefon: " . $phone . "\n\n";
       $body .= "Nachricht:\n" . $message;
       $mail->body($body);

echo '

'.$body.'

';

       $numSent = $mail->send();

$out .= '

'.__("Vielen Dank für Ihre Nachricht! Wir melden uns so bald wie möglich.").'

';

     }
 } else {
     // GET request, simply show the form
     $out .= $form->render();
 }
 return $out;

}