The dropdown in my form is only submitting the ID (ie 4) instead of the value (ie Atlanta, Georgia 323 S. 2nd St.). In the $source, I tried switching out "ID" with "LocationDropDown" but that resulted in no data in the dropdown on the site.
Do I need something else to process the form instead of $data['StoreLocale']?
StoreLocation.php
class StoreLocation extends DataObject {
public static $db = array(
'Address' => 'Varchar(80)',
'City' => 'Varchar',
'State' => 'Enum("-- Select a state --,Alabama,...,Wyoming")',
);
// Populate Dropdown on Contact Form
function LocationDropDown() {
return $this->City . ', '. $this->State . ' - '. $this->Address;
}
}
ContactPage.php
class ContactPage_Controller extends Page_Controller {
// CONTACT FORM
function ContactForm() {
// Create fields
$fields = new FieldSet(
...
new DropdownField(
$name = 'StoreLocale',
$title = 'If your comments pertain to a specific store, please pick a location',
$source = Dataobject::get("StoreLocation")->map("ID", "LocationDropDown", $emptyString = "-- Select Location --", $sortByTitle = false),
$value = 0
),
...
);
// Create actions
$actions = new FieldSet(
new FormAction('doContactForm', 'Submit Form')
);
$validator = new RequiredFields("Email","Comments");
return new Form($this, 'ContactForm', $fields, $actions, $validator);
}
// PROCESS THE FORM
function doContactForm($data, $form) {
//Set data
...
$body = '<h1>Feedback / Comments</h1><p><b>From:</b> '.$data['Email'].'</p>'.'<p><b>Location:</b> '.$data['StoreLocale'].'</p>'.$data['Comments'];
$email = new Email($from, $to, $subject, $body);
$email->send();
}
}
Thanks