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.

Content Editor Discussions /

Forum for content editors and CMS users.

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

MultiForm - pull data from CMS field


Go to End


2024 Views

Avatar
socks

Community Member, 191 Posts

14 December 2014 at 6:37pm

How can I pull data from a field in the CMS and insert into the form function finish()?

I have the fields setup and my MultiForm is on this page...

<?php

class MenuOrderForm extends Page {
	
	private static $db = array(
	      'MenuFormMailTo' => 'Text',
	      'MenuFormSubject' => 'Varchar(200)'
	);

   function getCMSFields() {
      $fields = parent::getCMSFields();

      $fields->addFieldsToTab('Root.Form', array(
         new Textfield('MenuFormSubject', 'Email Subject'),
         new Textfield('MenuFormMailTo', 'Email to (BCC): (if multiple addresses, separate with a comma)')
      ));

      return $fields;
    }

}

class MenuOrderForm_Controller extends Page_Controller {

   public static $allowed_actions = array(
      'MenuMultiForm'
   );
   
}

MultiForm...

<?php

class MenuMultiForm extends MultiForm {
	
	public static $start_step = 'MenuOrderInfoFormStep';

	public function finish($data, $form) {
		parent::finish($data, $form);

		$steps =  MultiFormStep::get()->filter(array(
		   "SessionID" => $this->session->ID
		));
		$output = array(); 
		foreach($steps as $step) { 
			$output = array_merge($output, $step->loadData()); 
		}
		
		$from = 'email@domain.com'; 
		$to = $output['ContactEmail'];
		$subject = 'Menu Order Form Submission'; 
		
		$email = new Email($from, $to, $subject); 
		
                 // How Pull MenuFormMailTo from MenuOrderForm.php and insert in Bcc?
		$email->addCustomHeader('Bcc', '       '  ); 
 
		
		$email->setTemplate('MenuEmail');
		$email->populateTemplate($output);
		$email->populateTemplate($data);
		$email->send();
		$controller = $this->getController();
	        $controller->redirect(Director::get_current_page()->Link() . "?menu-success=1");
		$this->session->delete();
		
	}

}