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.

Form Questions

Adding a second form to the Login Page


Reply

5 Posts   1251 Views

Avatar
Dann

1 April 2011 at 7:53pm (Last edited: 1 April 2011 7:53pm), Community Member, 4 Posts

Hi There,

I've been trying to find a solution to this today without much luck.

I want to display a Member Registration Form next to the User Login Form. So if the user doesn't have an account they can just create one on the same page. I'm considering solving it this way - http://www.silverstripe.org/archive/show/3158?start=8#post178888

How would you go about doing this?

Avatar
simon_w

2 April 2011 at 10:28am Forum Moderator, 474 Posts

I would add the register form to my Page_Controller class (say as function RegisterForm), then create a Security_login.ss template in my Layout directory that call both $Form and $RegisterForm

Avatar
Dann

2 April 2011 at 12:26pm Community Member, 4 Posts

Ahh I see.

I was trying to extend the LoginForm class. I didn't think to add it to the Page_controller instead. IT should be easy then to just update the template with the two forms. That sounds like a hell of a lot easier way of doing it. I'll try it out on Monday.

Cheers!

Avatar
Dann

4 April 2011 at 1:39pm (Last edited: 4 April 2011 1:41pm), Community Member, 4 Posts

I've added the form now to the Page Controller and it's displaying in the template but when I submit I get this error message.

The action 'RegistrationForm' does not exist in class Security

Does anybody know how I can add this action to the Security class?. I don't really want to change the core class if I can avoid that.

Avatar
Dann

5 April 2011 at 2:18pm (Last edited: 5 April 2011 2:20pm), Community Member, 4 Posts

This was not as easy as I had hoped.

Overriding Security.php's $allowed_actions array worked for the Registration form but then failed for all over actions performed by $LoginForm such as "Logging In" and "Logging Out". It wasn't obvious where these are being set.

To solve this issue I eventually created a RegistrationPage class with the form and included a non-custom $LoginForm into the template.

I then set a default login destination in the config like this.

Security::set_default_login_dest('my-profile');

I then fixed up the Securitty.ss template to show a message when logged in / logged out as the default logout action is still to redirect to this template.