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're retiring the forums!

The SilverStripe forums have passed their heyday. They'll stick around, but will be read only. We'd encourage you to get involved in the community via the following channels instead:

Form Questions /

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

FormAction in CMS ignores its $action

Go to End



Community Member, 4 Posts

24 December 2009 at 5:20am

Good day, people.

I need your help. I've got the nessecarity of adding an ActionForm into the CMS pages which will send emails to all who subscribed on that pages. By this i've found - there is an detail instruction how to add ActionForm into CMS. I've adapted it for my task and i'd say that it works perfectly if there won't be a trouble - when i send a form it looks like there's no $action for it. Iframe just refreshes without sending any data. While debuggin i tried director::redirect(MySitedomain) in $action function - if there is an $action i must see my site in form frame after sending form data but it fails (the same trick works in function which returns the form).
I also put my source code on site pages (with nessecary changes in getting pages IDs) and it works. But not in CMS.

My code is below:


class EventPage extends Page{

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

$fields->addFieldToTab("Root.Content.Subscribers", new LiteralField('iframe','<iframe src="/MailController/iframe/'.$this->ID.'" width="100%" height="200"></iframe>'));

return $fields;


class MailController extends Controller{
static $allowed_actions = array ('iframe', 'sendmail', 'MailForm');

function MailForm(){
$params = Director::urlParams();
$fields = new FieldSet();
$fields->push(new TextareaField("Letter", "Letter to subscribers",5,50));
$fields->push(new HiddenField('ID', 'Page ID',$params['ID']));
$actions = new FormAction("sendmail", "Send mail to subscribers");
return new Form($this, "MailForm", $fields, $actions);

function sendmail($data, $form){
$sqlQuery = new SQLQuery();
$sqlQuery->select = array('MemberID');
$sqlQuery->from = array("EventPage_Members");
$sqlQuery->where = array("EventPageID=".$data[ID]);
$rawSQL = $sqlQuery->sql();
$result = $sqlQuery->execute();
foreach($result as $row){
$query .= $row[MemberID]." OR ID=";
$query .= $row[MemberID];
$memberList = DataObject::get("Member", $query,"","","");
foreach ($memberList as $member){
$email = new Email_Template();
$email->from = "**";
$email->subject = "**";
$email->to = $member->Email;
$email->body = $data[Letter];
$email->ss_template = 'SubscribeTemplate';

function Link(){

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "">

Waiting for your help :-)