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.

We've moved the forum!

Please use forum.silverstripe.org for any new questions (announcement).
The forum archive will stick around, but will be read only.

You can also use our Slack channel or StackOverflow to ask for help.
Check out our community overview for more options to contribute.

Customising the CMS /

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

SOLVED?? Multiform / action templates


Go to End


2 Posts   2155 Views

Avatar
Vromepiet

Community Member, 11 Posts

1 August 2010 at 2:22am

Edited: 01/08/2010 8:59am

Hello,

I'm quite new to Silverstripe and currently trying to make a module where 2 different kinds of users can register themselves or edit their profile.

To achieve this, I would like to use the multiform module. I installed it and it works using the kind of procedure described in the tutorials and the silverstripe book (using a specific page for the registration, which can be placed in the menu).

However, I tried to make a user registration proces similar to the one in the forum module, using a "register" action in a "BusinessUser" page controller, without a specific page. It then shows step 1 of the form correctly, but doesn't proceed to step 2.

Can anyone please explain a bit what's going wrong here (so that I learn a bit more about the idea behind the system) and probably give a suggestion how to deal with it?

class BusinessRegistrationMultiForm extends MultiForm {
   public static $start_step = 'BusinessRegistrationFirstStep';

   // ...
}

class BusinessRegistrationFirstStep extends MultiFormStep {
	public static $next_steps = 'BusinessRegistrationLastStep';
	
	function getFields() {
		$fields = singleton( 'Member' )->getBusinessFirstFields();
		return $fields;
	}
}



class MemberProfile extends Page_Controller {

   function register() {
      return array(
         "Title" => 'titel', 
         "Subtitle" => 'Register',
      );
   }
   
   function Link($action = null) {
      return "$this->class/$action";
   }

}

class BusinessProfile extends MemberProfile {

	function BusinessRegistrationForm() {
		return new BusinessRegistrationMultiForm($this, 'BusinessRegistrationForm');
	}
}

And then in BusinessProfile_register.ss

$Content
<p>Hi</p>
<div id="UserProfile">
	<% if CurrentMember %>
		<p><% _t('PLEASELOGOUT', 'Please logout before you register') %> - <a href="Security/logout"><% _t('LOGOUT', 'Logout') %></a></p>
	<% else %>
		$BusinessRegistrationForm
	<% end_if %>
</div>

Thanks, Jeroen.

Avatar
Vromepiet

Community Member, 11 Posts

1 August 2010 at 8:58am

SOLVED??

I added the following code to all steps:

   public function Link() {
      return Controller::curr()->Link() . 'register?MultiFormSessionID=' . $this->Session()->Hash;
   }

It works, but shouldn't this be handled by the multiform module itself? Why does it cutoff the "register" (action) part if I don't include this code in the steps?