2017 © Pedro Peláez
 

silverstripe-module contact-form

Allows you to create a contact form in SilverStripe with optional Postmark integration. Works with Bootstrap Forms module.

image

silverstripe/contact-form

Allows you to create a contact form in SilverStripe with optional Postmark integration. Works with Bootstrap Forms module.

  • Monday, June 20, 2016
  • by unclecheese
  • Repository
  • 6 Watchers
  • 11 Stars
  • 1,648 Installations
  • JavaScript
  • 1 Dependents
  • 0 Suggesters
  • 9 Forks
  • 17 Open issues
  • 2 Versions
  • 0 % Grown

The README.md

A contact form for SilverStripe 3.0

This module allows you to create a simple contact form to add to a page type. It is highly configurable since the creation of the form happens in the page controller., (*1)

Features

  • Integrates with Postmark for bullet-proof email delivery
  • Integrates with the Boostrap Forms module
  • Includes an API for automatic jQuery validation
  • A spam protection API that can be extended with your own spam protection plugins
  • Logs failed spam attempts to the database, and locks out repeat offending IPs

The "Kitchen Sink" example

<?php

public function ContactForm() {
  return ContactForm::create("ContactForm","you@example.com","You've received a new contact form!")
            ->addFields(
                TextField::create("Name","What is your name?"),
                EmailField::create("Email", "What is your email?")
            )
            // You can add fields as strings, too.
            ->addField("Your message//Textarea")
            ->setSuccessMessage("Thanks for submitting the form!")
            ->setSuccessURL($this->Link('success'))
            ->setOnBeforeSend(function($data, $form) {
                  // Do stuff here. Return false to refuse the form.
            })
            ->setEmailTemplate("MyCustomTemplate")
            ->addOmittedField("SomeField")
            ->setIntroText("Someone submitted a form. Here's the data.")
            ->addSpamProtector(
                SimpleQuestionSpamProtector::create()
                  ->addQuestion("What's the opposite of skinny?","fat")
                  ->addQuestion("Which is bigger, a lake or an ocean?","ocean")
            )
            ->render();
}

What's with ->render()?

The ContactForm class is not actually a form. It is an object that serves as a proxy manager of a Form object. The ->render() method is critical to send the form to the template., (*2)

ContactFormPage

The ContactForm module comes with a page type that allows you to easily create contact forms based on user input in the CMS. The ContactFormPage class has fields for the "To" address, success messaging, and more., (*3)

To create a page with a contact form, simply create a descendant of ContactFormPage and call the parent Form() method., (*4)

<?php

class MyContactPage extends ContactFormPage {}

class MyContactPage_Controller extends ContactFormPage_Controller {

  public function Form() {
    return parent::Form()
        ->addFields(
          TextField::create("YourName","Your name"),
          EmailField::create("Email","Your email"),
          TextareaField::create("Message","Your message")
        )
        ->render();
  }
}

Setting up Postmark

Simply add your API key and confirmed "from" address to your _config.php., (*5)

<?php

define('POSTMARKAPP_API_KEY','xxxxxxxxxxxxxxxxxxxxx');
define('POSTMARKAPP_MAIL_FROM_ADDRESS', 'me@example.com');

Once these settings are in place, the ContactForm module will use Postmark as its delivery method., (*6)

Integrating with Bootstrap Forms

If you have the BootstrapForms module installed, the form will automatically render as a BootstrapForm, unless you tell it otherwise, using ->setUseBootstrap(false), (*7)

Setting the default spam protection

You can set up default spam protection that every form will use, unless configured otherwise., (*8)

_config.php, (*9)

<?php

ContactForm::set_default_spam_protection(array(
    SimpleQuestionSpamProtector::create()
            ->setHeading("Prove you're human by answering a simple question")
            ->addQuestion("Is fire hot or cold?", "hot")
            ->addQuestion("What color is a stop sign?", "red")
            ->addQuestion("Is water wet or dry?","wet")
            ->addQuestion("Is the world flat?", "no")
            ->addQuestion("What animal says \"Meow?\"", "cat"),

        HoneyPotSpamProtector::create()
            ->setName("PleaseFillThisOutYouBot")

The Versions

20/06 2016

dev-master

9999999-dev

Allows you to create a contact form in SilverStripe with optional Postmark integration. Works with Bootstrap Forms module.

  Sources   Download

BSD-3-Clause

The Requires

 

email form silverstripe forms contact postmark

13/12 2013

dev-setRequiredField

dev-setRequiredField

Allows you to create a contact form in SilverStripe with optional Postmark integration. Works with Bootstrap Forms module.

  Sources   Download

BSD-3-Clause

The Requires

 

email form silverstripe forms contact postmark