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, Ed, biapar, Willr, Ingo, swaiba

Is User Registration Possible?

Go to End

6 Posts   5749 Views


Community Member, 1 Post

8 May 2009 at 12:38am

I'm struggling to find any documentation in regards to getting users to sign up.

There seems to be a bunch of security/authentication stuff but nothing which actually tells me how to set up users in a SilverStripe project?


Community Member, 108 Posts

8 May 2009 at 1:00am

Oh yes, very easily.

You are going to create a new page (I called mine RegistrationForm.php) and save it in you mysite/code/RegistrationForm.php

See my RegistrationForm.php below.

Then you need to create a and save that in your project/templates/

The will look similar (if you want) to the The main variable you need in this page is $Form which is passed from the RegistrationForm.php

If you need to include the email notification like I did you will want to create a that is used to format the email that gets sent.

Notice in the RegistrationForm.php there is a setTemplate that directs the page to use as the template as well as the

I hope this helps. You can see it in action if you would like at


class RegistrationForm extends Page {

class RegistrationForm_Controller extends Page_Controller {

// Make sure you set this to the right group.
// See
private $defaultGroupID = 2;

* This function lets you put a form on your page, using $Form.
function Form() {

return new Form($this, "Form", new FieldSet(

// List your fields here
new EmailField("Email", "Email address"),
new PasswordField("Password", "Create a Password"),
new TextField("FirstName", "First name"),
new TextField("LastName", "Last name"),
new TextField("Phone", "Phone"),
new TextField("Company", "Company/Hospital"),
new TextField("Address1", "Address 1"),
new TextField("Address2", "Address 2"),
new TextField("City", "City"),
new TextField("State", "State"),
new TextField("Zip", "Zip"),
new TextField("Country", "Country"),
new ReadonlyField("IPAddress","IPAddress",$_SERVER['REMOTE_ADDR'])

), new FieldSet(

// List the action buttons here
new FormAction("SignupAction", "Submit")

), new RequiredFields(

// List the required fields here: "Email", "FirstName"
"Email", "Password", "FirstName", "LastName", "Phone", "Company", "Address1", "City", "State", "Zip", "Country"


* 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();

// Write it to the database. This needs to happen before we add it to a group

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

// Redirect to a page thanking people for registering
//Set data
$From = $data['Email'];
$To = "email address of who gets the email, 2nd email addres";
$Subject = "Registration Request";
$email = new Email($From, $To, $Subject);
//set template
//populate template
//send mail

//$e = new Email();
//$e->To = "";
//$e->Subject = "Registration Request";
// $e->Body = populateTemplate($data);

//$e->Body = $member;


// Redirect to a failure page





Community Member, 145 Posts

8 May 2009 at 2:39am

Edited: 08/05/2009 2:40am

Terry, when you post code, its best to surround it with [ code ][ /code ] tags, it displays better and makes it easier to read


Community Member, 108 Posts

8 May 2009 at 2:59am

Thanks for this. I will do this next time.



Community Member, 6 Posts

14 June 2009 at 10:12pm

Hi Terry, thanks for the example. Can you explain more about how and where the additional member data fields are processed and saved (which table). By following the example I can save names, email and password (all fields are displayed in form) into existing member table and assign to a group but am I missing something here ($db?) to save additional fields??? Thanks.
nb: I have added a similar question to another post too.


Community Member, 6 Posts

18 June 2009 at 1:54pm

More clues here;

and here (this link is at bottom of above post);

this tutorial may be useful for you :

Also, in one of the tutorials in suggests, if you want to just grab peoples details and not give them any 'logged in' capabilities, then don't register them (with a password) in the core members table.
The Forum module is perfect for seeing how to extend the current member table, if you do need to do it tho.