Выбранные значения ListboxField, отправленные по электронной почте - PullRequest
0 голосов
/ 01 мая 2020

У меня есть контактная форма, которая отображается в передней части моего сайта Silverstripe (v 3.1). Я пытаюсь добавить ListboxField в форму, и выбранные значения появляются в отправляемом электронном письме. Я могу получить поле для отображения, но при отправке электронного письма выбранные значения не отображаются.

ContactForm. php

class ContactForm extends Form {

public function __construct($controller, $name) {

    $fields = FieldList::create(

        ListboxField::create('MoreInformation', 'I would like more information about:', array(
            'Joining as a Consultant'=>'Joining as a Consultant',
            'Hosting a Gathering'=>'Hosting a Gathering',
            'Purchasing a Product'=>'Purchasing a Product',
            'Receiving Your Monthly Inspiration Living Newsletter'=>'Receiving Your Monthly Inspiration Living Newsletter'
        ))->setAttribute('required','true')->setMultiple(true)
    );

    $actions = FieldList::create(
        FormAction::create('process','Submit')->addExtraClass('button small orange right')
    );

    parent::__construct($controller, $name, $fields, $actions);

    $this->setHTMLID('contact-form');
    $this->disableSecurityToken();

}

public function process($data, $form) {
    $contactPage = ContactPage::get()->First();
    $submission = new ContactMessage($data);
    $submission->write();
    $From = $data['Email'];
    $To = (!empty($contactPage->FormEmail) ? $contactPage->FormEmail : 'email@email.com');
    $Subject = "Website Contact Form";        
    $email = new Email($From, $To, $Subject);
    $email->replyTo($From);
    $email->setTemplate('ContactEmail');
    $email->populateTemplate($submission);
    $email->send();

}

ContactMessage. php

class ContactMessage extends DataObject {
private static $db = array(
    'FirstName' => 'Varchar(255)',
    'LastName' => 'Varchar(255)',
    'Address' => 'Text',
    'City' => 'Varchar(255)',
    'State' => 'Varchar(255)',
    'PostalCode' => 'Varchar(255)',
    'Email' => 'Varchar(255)',
    'Phone' => 'Varchar(255)',
    'Source' => 'Varchar(255)',
    'Message' => 'Text',
    'MoreInformation' => 'Varchar(255)',
);

private static $default_sort = 'Created DESC';

static $summary_fields = array(
    'Created' => 'Created',
    'FirstName' => 'FirstName',
    'LastName' => 'LastName',
    'Email'   => 'Email',
);

ContactEmail.ss

<td>More Information: $MoreInformation</td>

Я просмотрел еще пару билетов в Stackoverflow, но не уверен, что они применимы к этому ...

SilverStripe 3.1 Сохранить массив ListboxField в базу данных

Как сохранить несколько значений, введенных в ListBoxField и l oop через значения?

Любые идеи? Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...