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   1301 Views

Avatar
Dann

Community Member, 4 Posts

1 April 2011 at 7:53pm

Edited: 01/04/2011 7:53pm

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

Forum Moderator, 474 Posts

2 April 2011 at 10:28am

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

Community Member, 4 Posts

2 April 2011 at 12:26pm

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

Community Member, 4 Posts

4 April 2011 at 1:39pm

Edited: 04/04/2011 1:41pm

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

Community Member, 4 Posts

5 April 2011 at 2:18pm

Edited: 05/04/2011 2:20pm

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.