Yea got the LocationFacilities page,
<?php
class LocationFacilities extends DataObject {
static $db = array(
'Name' => 'Varchar(30)'
);
static $belongs_many_many = array(
'Locations' => 'Locations'
);
}
Locations page,
<?php
class Locations extends DataObject {
static $db = array(
'Name' => 'Varchar(255)',
'GridRef' => 'Varchar(15)',
'Postcode' => 'Varchar(10)',
'Notes' => 'Text',
'HeightRst' => 'Decimal',
'Training' => 'Boolean',
'Fundraising' => 'Boolean'
);
static $has_one =array (
'Vet' => 'Vet',
'Hospital' => 'Hospital',
'OSMaps' =>'OSMaps',
'LocationsPage' => 'LocationsPage'
);
static $many_many =array (
'LocationFacilities' => 'LocationFacilities'
);
//Set our defaults
static $defaults = array(
);
function canCreate() {return true;}
function canEdit() {return true;}
public function getFrontendFields() {
$fields = $this->scaffoldFormFields(array(
'restrictFields' => array(
'Name',
'GridRef',
'OSMaps',
'Postcode',
'HeightRst',
'Notes',
'Vet',
'Hospital',
'LocationsPage'
)
)
);
return $fields;
}
static $summary_fields = array(
'Name' => 'Name',
'GridRef' => 'Grid Reference'
);
function getCMSFields() {
$fields = parent::getCMSFields();
$FacilityList = DataObject::get('LocationFacilities');
$Facilitytablefield = new ManyManyComplexTableField(
$this,
'LocationFacilities',
'LocationFacilities',
array(
'Name' => 'Name'
)
);
// add a checkbox set field to the 'Industry' tab in the CMS
$fields->removeFieldFromTab("Root", "Location Facilities");
$fields->addFieldToTab('Root.Facilities', $Facilitytablefield );
return $fields;
}
function HeightWarning() {
return ($this->HeightRst > 0 && $this->HeightRst < 3);
}
public function Link()
{
if($LocationsPage = $this->LocationsPage())
{
return $LocationsPage->Link('/show/') . $this->ID;
}
}
}
and finally the AddLocations page,
<?php
class AddLocations extends Page {
static $db = array(
);
static $has_one = array(
);
static $many_many = array(
);
}
class AddLocations_Controller extends Page_Controller {
function locationaddForm() {
$fac = DataObject::get("LocationFacilities",""); // getting all facilities
/*$map = $fac->toDropDownMap();*/
$map = $fac->map('ID','Name');
$fields = new FieldSet(
new TextField('Name'),
new TextField('GridRef'),
new TextField('Postcode'),
new TextField('HeightRst'),
new CheckboxField('Training', 'Training Location'),
new TextareaField('Notes', 'Notes'),
new CheckboxSetField('ID','Location Facilities',$map) //add 1,true to make option one ticked
);
$actions = new FieldSet(
new FormAction('dolocationadd', 'Submit')
);
return new Form($this, 'locationaddForm', $fields, $actions);
}
function dolocationadd($data, $form) {
$submission = new Locations();
$form->saveInto($submission );
$submission ->write();
$data = $form->getData();
}
Director::redirectBack();
}
}
?>
Thanks for getting back to me, anything obvious missing?
Mick