У меня есть контактная форма, которая отображается в передней части моего сайта 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 через значения?
Любые идеи? Спасибо!