I've gotten some strange behavior trying to put a ManyManyComplexTableField into a DataObject. When I put in the following code and try to create a new entry I just get a blank box and my PHP logs say "Call to a member function MyUnits() on a non-object in /Applications/MAMP/htdocs/ss_clean/sapphire/forms/HasManyComplexTableField.php" - but when I try to edit an existing record I get the table I want but nothing gets saved when I updated even though it says it went through.
class Person extends DataObject {
static $db = array(
'FirstName' => 'Text',
'LastName' => 'Text',
'Role' => 'Text',
'Email' => 'Text'
);
static $has_one = array(
'HeadShot' => 'Image',
);
static $many_many = array (
'MyUnits' => 'Unit'
);
function getCMSFields_forPopup() {
$fields = new FieldSet();
$fields->push( new TextField( 'FirstName', 'First Name' ) );
$fields->push( new TextField( 'LastName', 'Last Name' ) );
$fields->push( new TextField( 'Email' ) );
$fields->push(new DropdownField('Role', 'Role', array(
'Alumni' => 'Alumni',
'Faculty' => 'Faculty',
'Staff' => 'Staff',
'Student' =>'Student'
)), 'Content'
);
$fields->push(new ImageField('HeadShot'));
$fields->push(new ManyManyComplexTableField(
$this,
'MyUnits',
'Unit',
array('Name' => 'Unit Name')
));
return $fields;
}
---
so when I take out the "push->(new ManyMany..." I can create a new record, but when I put it back in it only shows on edit - but nothing gets saved. I'm not sure if I'm explaining this clearly as I'm honestly confused...