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.

General Questions /

General questions about getting started with SilverStripe that don't fit in any of the categories above.

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

contact page problem

Go to End

2 Posts   1184 Views


Community Member, 165 Posts

21 October 2009 at 1:23pm


I have used the basic contact page from the tutorial which I got working fine. now I want to keep it on every page using an include but having difficulty making this work. I get my contact page to display but without the form.

Here is the code

/* *****************
* Model
class ContactPage extends Page
static $db = array(
'Mailto' => 'Varchar(100)', //Email address to send submissions to
'SubmitText' => 'HTMLText' //Text presented after submitting message

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

$fields->addFieldToTab("Root.Content.OnSubmission", new TextField('Mailto', 'Email submissions to'));
$fields->addFieldToTab("Root.Content.OnSubmission", new HTMLEditorField('SubmitText', 'Text on Submission'));

return $fields;

/* *****************
* Controller
class ContactPage_Controller extends Page_Controller{

function ContactForm() {
// Create fields
$Params = Director::urlParams();

$fields = new FieldSet(
new TextField('Name', 'Name*'),
new EmailField('Email', 'Email*'),
new TextareaField('Comments','Message*')

// Create action
$actions = new FieldSet(
new FormAction('SendContactForm', 'Submit')
// Create action
$validator = new RequiredFields('Name', 'Email', 'Comments');

return new Form($this, 'ContactForm', $fields, $actions, $validator);

function SendContactForm($data) {

//Set data
$From = $data['Email'];
$To = $this->Mailto;
$Subject = "Website Contact message";
$email = new Email($From, $To, $Subject);
//set template
//populate template
//send mail
//return to submitted message
Director::redirect(Director::baseURL(). $this->URLSegment . "/?success=1");


public function Success()
return isset($_REQUEST['success']) && $_REQUEST['success'] == "1";

<% if GetContactPage %>
<% control GetContactPage %>
<% if Success %>
<% else %>
<% end_if %>
<% end_control %>
<% end_if %>




Community Member, 283 Posts

23 October 2009 at 4:31pm

Man, what is it with folks using $_REQUEST tonight? Cease and desist!

Your code can be simplified if you check out some of the docs on Forms. There is built in posting back to a form that allows you to test and pass success message back without the tricks you're using in the template