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.

All other Modules

Discuss all other Modules here.

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

Newsletter module subscribe form problem


Reply

4 Posts   1142 Views

Avatar
Mediaversa

28 May 2010 at 2:24am Community Member, 5 Posts

Hello everyone,

I'm new with SilverStripe and I have a problem with the newsletter module. I've made a subscribe form, but I cannot enable the field for the users email. The first and surname work flawless and the data entered in the form is submitted to the mailing list.

In the backoffice, I cannot enable the field for the email, as the checkbox is disabled.

Can anyone tell me what could cause this problem?

Greetings

Avatar
BlueO

1 June 2010 at 10:17pm Community Member, 52 Posts

Hi there,

I had trouble with the subscription page too so ended up patching one together form bits found on the forum/docs. It sits in /mysite/code/SignupPage.php

hope it helps. The key thing is to set it to the right group in $defaultGroupID

<?php

class SignupPage extends Page {
   static $db = array(
   );
   static $has_one = array(
);
}

class SignupPage_Controller extends Page_Controller {

   // Make sure you set this to the right group.
   // See http://doc.silverstripe.com/doku.php?do=show&id=recipes%3Aforms
   private    $defaultGroupID = 3;

   /**
   * This function lets you put a form on your page, using $Form.
   */
   function Form() {
      
      $fields = new FieldSet(

         // List your fields here
         new TextField("FirstName", "First name"),
         new TextField("Surname"),
         new EmailField("Email", "Email address")
      );
      
      $actions = new FieldSet(
         // List the action buttons here
         new FormAction("SignupAction", "Sign up")
      );
      
      $validator = new RequiredFields(
         "FirstName", "Email"
         // List the required fields here: "Email", "FirstName"
      );
      
      $form = new Form($this, "Form", $fields, $actions, $validator);
      
      //spam protection added - needs to be set in _config.php
      $protector = SpamProtectorManager::update_form($form, null, array('FirstName' => 'author_name', 'Email' => 'author_email',));
      if($protector) $protector->setFieldMapping('FirstName', 'Email');

   return $form;

   }

   /**
   * This function is called when the user submits the form.
   */
   function SignupAction($data, $form) {

      // Create a new Member object and load the form data into it
      $member = new Member();
      $form->saveInto($member);

      // Write it to the database. This needs to happen before we add it to a group
      $member->write();

      // Add the member to group. (Check if it exists first)
      if($group = DataObject::get_one('Group', "ID = $this->defaultGroupID")) {

         $member->Groups()->add($group);
         // Redirect to a page in this case the home page
         Director::redirect('home/');

      }else{

         // Redirect to a failure page
         /* Director::redirect('failure/'); */

      }

   }
}

?>

Avatar
Mediaversa

2 June 2010 at 12:09am Community Member, 5 Posts

I've tried the thing above, but the result is a white page. When I remove $form from my template however, the page loads, but without the form (which is logical)

Avatar
BlueO

2 June 2010 at 10:24am Community Member, 52 Posts

Hi, have you got the spamprotection module installed? If not you'll need to take that part out. It's running on ss 2.4 and the current newsletter release from silverstripe.org