Hi UncleCheese,
thanks for your answer. Perhaps you can help me with some problems I have with my dataobjects? As I wrote these are my first steps with SilverStripe an dataobjects and I am stuck with some things... the tutorials didnt`t help unfortunately...
IsccPage is my administration page for Certificate, CertificationBody and Region.
A CertificationBody has Certificates - so a Certificate belongs to one CertificationBody. Both have a region, which should be selectable in any way from within DOM (CheckboxSetField or DropdownField?).
class IsccPage extends Page
{
static $has_many = array (
'Certificates' => 'Certificate',
'CertificationBodies' => 'CertificationBody',
'Regions' => 'Region'
);
function getCMSFields() {
$fields = parent::getCMSFields();
$fields->addFieldToTab("Root.Content.Certificates", new DataObjectManager(
$this,
'Certificates',
'Certificate',
array(
'CertificateNumber' => 'Certificate Number',
'DateOfIssue' => 'Date of Issue',
'DateOfExpiration' => 'Date of Expiration',
'CompanyCertified' => 'Company Name'
),
'getCMSFields_forPopup'
));
$fields->addFieldToTab("Root.Content.CertificationBodies", new DataObjectManager(
$this,
'CertificationBodies',
'CertificationBody',
array(
'CompanyName' => 'Company Name',
'ContactPerson' => 'Contact Person',
'Telephone' => 'Telephone',
'Email' => 'Email'
),
'getCMSFields_forPopup'
));
$fields->addFieldToTab("Root.Content.Regions", new DataObjectManager(
$this,
'Regions',
'Region',
array('Title' => 'Title'),
'getCMSFields_forPopup'
));
return $fields;
}
}
class Certificate extends DataObject {
static $db = array (
'CertificateNumber' => 'Text',
'DateOfIssue' => 'Date',
'DateOfExpiration' => 'Date',
'CompanyCertified' => 'Text',
'LocationOfCompany' => 'Text',
'Country' => 'Text'
);
static $has_one = array (
'IsccPage' => 'IsccPage',
'Region' => 'Region'
);
function getCMSFields_forPopup() {
$fields = new FieldSet();
$fields->push( new TextField('CertificateNumber') );
$fields->push( new CalendarDateField('DateOfIssue') );
$fields->push( new CalendarDateField('DateOfExpiration') );
$fields->push( new TextField('CompanyCertified') );
$fields->push( new TextField('LocationOfCompany') );
$fields->push( new TextField('Country') );
$regionsList = DataObject::get('Region');
$fields->push(new CheckboxSetField('Regions', '', $regionsList));
return $fields;
}
}
class CertificationBody extends DataObject {
static $db = array (
'CompanyName' => 'Text',
'FullAddress' => 'Text',
'Country' => 'Text',
'ContactPerson' => 'Text',
'Telephone' => 'Text',
'Telefax' => 'Text',
'Email' => 'Text',
'Website' => 'Text',
'CertificationProducts' => 'Text',
'Region' => 'Text',
'CertifiedSince' => 'Date'
);
static $has_one = array(
'IsccPage' => 'IsccPage'
);
static $has_many = array (
'Certificates' => 'Certificate'
);
function getCMSFields_forPopup() {
$fields = new FieldSet();
$fields->push( new TextField('CompanyName') );
$fields->push( new CalendarDateField('CertifiedSince') );
$fields->push( new TextareaField('FullAddress') );
$fields->push( new TextField('Country') );
$fields->push( new TextField('ContactPerson') );
$fields->push( new TextField('Telephone') );
$fields->push( new TextField('Telefax') );
$fields->push( new TextField('Email') );
$fields->push( new TextField('Website') );
$fields->push( new TextField('CertificationProducts') );
$fields->push( new TextField('Region') );
$certList = DataObject::get('Certificate')->toArray();
$fields->push( new DropdownField(
'CertificateID',
'Certificates',
$certList)
);
$regionList = DataObject::get('Region');
$fields->push(new CheckboxSetField('Regions', '', $regionList));
return $fields;
}
}
class Region extends DataObject {
static $db = array(
'Title' => 'Varchar'
);
static $belongs_many_many = array(
'IsccPages' => 'IsccPage',
'Certificates' => 'Certificate',
'CertificationBodies' => 'CertificationBody'
);
}
puhh... i got the DOM working but..
Adding a CertificationBody I can select a Region but the form is not saving the value. Editing the Object shows no selection of a region.
Within CertificationBody I tried to use DropdownField for the Certificate but i shows only 'certificate' for any entry.
How can I select a CertificationBody from within a Certificate?
Whats wrong with my dataobjects? I am in a big muddle I think and it would very very great if someone can enlighten me ;-)
Thanks so much in advance!
Patte