Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

General Questions

General questions about getting started with SilverStripe that don't fit in any of the categories above.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

Form builder link up with static form


4 Posts   554 Views


15 July 2011 at 3:49am Community Member, 146 Posts

Hi everyone

I have made a good start to the following website

There is a form on the right hand side, which is static in the template include. However I obviously want this to be Form2Mail and create a backup copy of the data entered in the backoffice system.

I dont really know where to start with this, does anyone have some ideas?

Thanks very much in advance for any help.


15 July 2011 at 4:15am Community Member, 528 Posts

Take a look at

You could create a data object to store a backup copy of the form in the Database while mailing it to its intended recipient. I use a similar system to handle product reviews.

The Review DataObject looks like this

class Review extends DataObject
   static $db = array (
      'Date' => 'Date',
      'Name' => 'Text',
      'Email' => 'Text',
      'Title' => 'Text',
      'Location' => 'Text',
      'Rating' => 'Int',
      'Review' => 'HTMLText',
      'Approval' => 'Boolean'
   static $has_one = array (
      'Product' => 'Product',
      'ColorProduct' => 'ColorProduct'
   public function getCMSFields_forPopup()
      $ratingArray = array (
                   '1' => '1',
                   '2' => '2',
                   '3' => '3',
                   '4' => '4',
                   '5' => '5'
      return new FieldSet(
         new CheckboxField('Approval'),
         new CalendarDateField('Date'),
         new TextField('Name'),
         new EmailField('Email'),
         new TextField('Title'),
         new TextField('Location'),
         new DropdownField('Rating','Rating',$ratingArray),
         new TextareaField('Review')


While the ReviewForm on the Product DataObject looks like this

function UserProductReviewForm() {
// Create fields
$fields = new FieldSet(
                      new TextField('Name','Name:'),
                      new EmailField('Email','E-Mail Address:'),
                      new OptionsetField('Rating','Rating',array(
                                                      '1' => '1',
                                                      '2' => '2',
                                                      '3' => '3',
                                                      '4' => '4',
                                                      '5' => '5',
                      new TextField('Title','Review Title:'),
                      new TextareaField('Review'),
                      new HiddenField('ProductID', '', $this->ID),
                      new HiddenField('ProductName','',$this->Title)
// Create actions
$actions = new FieldSet(
new FormAction('doReview', 'Submit')
      $form = new Form($this, 'UserProductReviewForm', $fields, $actions);
      $protector = SpamProtectorManager::update_form($form);
      if($protector) $protector->setFieldMapping('Name', 'Email', 'Title', 'Review');
   return $form;

function doReview($data, $form) {
$review = new Review();
    //Set data
    $From = "";
    $To = "";
    $Subject = "New Review for " . $data['ProductName'];
    $email = new Email($From, $To, $Subject,$body);
    //set template
    //populate template
    //send mail
    //return to submitted message
    Director::redirect(Director::baseURL(). "thank-you-for-your-review/");
    //return $this->Mailto;

You could also just replace the whole set/populate template section buy pushing the form fields into the $body


15 July 2011 at 4:18am Community Member, 146 Posts

thanks very much... do you do any freelance? we are interested in getting a silverstripe developer on board. Cheers


15 July 2011 at 5:30am Community Member, 528 Posts

Haha I do, but I have an impending baby on the way and I don't want to commit to any major projects until I know how it will big wrench it'l throw in my freelance time :)

But if you need some advice, feel free to contact me.