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.

Customising the CMS

SOLVED?? Multiform / action templates


Reply

2 Posts   1270 Views

Avatar
Vromepiet

1 August 2010 at 2:22am (Last edited: 1 August 2010 8:59am), Community Member, 11 Posts

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

1 August 2010 at 8:58am Community Member, 11 Posts

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?