我希望扩展侧边栏电子邮件模块,不仅可以在侧边栏上显示,还可以扩展到普通页面,

时间:2016-06-03 10:32:52

标签: php silverstripe

我有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");  
    } 
}

0 个答案:

没有答案