我有silverstripe边栏电子邮件模块,并希望将其用作跨站点查询表单,而不仅仅用于侧边栏。 我也不想丢失侧边栏功能。
这是代码:
class SidebarEmail extends DataExtension {
static $db = array(
'Enquire'=>'Boolean' // Gives user the option to enable or disable enquiry form in CMS
);
public function getCMSFields() {
$this->extend('updateCMSFields', $fields);
return $fields;
}
public function updateCMSFields(FieldList $fields) {
$enquiredropdown = array('0'=>'No','1'=>'Yes');
$fields->addFieldToTab('Root.Main', new DropDownField('Enquire', 'Enable Enquiry Form?', $enquiredropdown),'Title');
return $fields;
}
}
class SidebarEmailConfig extends DataExtension {
static $db = array(
'EmailFrom'=>'Varchar(255)',
'EmailTo'=>'Varchar(255)',
'EmailSubject'=>'Varchar(255)',
'EmailMessage'=>'Text'
);
public function getCMSFields() {
$this->extend('updateCMSFields', $fields);
return $fields;
}
public function updateCMSFields(FieldList $fields) {
$fields->addFieldToTab('Root.SidebarEmail', new TextField('EmailFrom', 'Email address of sender. eg siyanda@opticblaze.co.za'));
$fields->addFieldToTab('Root.SidebarEmail', new TextField('EmailTo','Email address of recipiant'));
$fields->addFieldToTab('Root.SidebarEmail', new TextField('EmailSubject','Subject line of email'));
$fields->addFieldToTab('Root.SidebarEmail', new TextField('EmailMessage','Message to display to recipiant'));
return $fields;
}
}
class SidebarEmailController extends Extension {
private static $allowed_actions = array (
'EnquiryForm'
);
// Combine email styles with existing files
public function init() {
parent::init();
}
public function EnquiryForm() {
//...
// Set placeholder text
$name1->setAttribute('placeholder', 'Name & Surname');
$phone1->setAttribute('placeholder', 'Phone Number');
$email1->setAttribute('placeholder', 'Email Address');
$info1->setAttribute('placeholder', 'Comment/Query');
//Form Action
$actions = new FieldList(
new FormAction('SendContactForm', 'Submit')
);
//Create Validators
$validator = new RequiredFields('Name', 'Email', 'Comments');
//Create form
$form = new Form($this->owner, 'EnquiryForm', $fields, $actions, $validator);
return $form;
}
public function SendContactForm($data, $form) {
$EmailConfig = SiteConfig::get();
//Set email form data
$From = $EmailConfig['SiteConfig']->EmailFrom;
$To = $EmailConfig['SiteConfig']->EmailTo;
$Subject = $EmailConfig['SiteConfig']->EmailSubject;
$EmailMessage = $EmailConfig['SiteConfig']->EmailMessage;
$email = new Email($From, $To, $Subject);
//Set template
$email->setTemplate('ContactMail');
//Populate template
$email->populateTemplate($data);
//Send mail
$email->send();
//Return to submitted message
//$form->sessionMessage($EmailMessage,'good');
//Controller::curr()->redirectBack();
return Controller::curr()->redirect("/kesho");
}
}