I use the following model:
Object "Person" belong to many "Team"
and a Team can have many Person
In the admin module, I created a Team Holder and a Team below the TeamHolder Page.
When I click on the "Person" tab, I would like to show a table with the Photo, name, ... AND Category (which is another DataObject).
I saw in some posts that I could create a method into the Person class as a "Custom getter" like in this tutorial:
http://doc.silverstripe.org/doku.php?id=tablelistfield
But methods in the "Person" class returns nothing (I've got empty columns in the ComplexTable) (both for the Picture and for the text). Can anyone help me on that ?
class Team extends Page {
static $db = array(
'Annee' => 'Text'
);
static $has_one = array(
);
static $many_many = array(
'Persons' => 'Person',
'Categories' => 'Category'
);
function getCMSFields() {
$fields = parent::getCMSFields();
$fields->addFieldToTab( 'Root.Content.Main', new TextField( 'Annee' ) );
$MemberTablefield = new ManyManyComplexTableField(
$this,
'Persons',
'Person',
array(
'Thumbnail' => 'Image',
'Nom' => 'Nom',
'Prenom' => 'Prenom',
'DateNaissance' => 'Date de naissance',
'Email' => 'Email',
'Category' => 'Categorie'
),
'getCMSFields_forPopup'
);
$MemberTablefield->setAddTitle( 'Persons' );
$fields->addFieldToTab( 'Root.Content.Persons', $MemberTablefield );
$CategoryTablefield = new ManyManyComplexTableField(
$this,
'Categories',
'Category',
array(
'Poid' => 'Poid'
),
'getCMSFields_forPopup'
);
$CategoryTablefield->setAddTitle( 'Categories' );
$fields->addFieldToTab( 'Root.Content.Categories', $CategoryTablefield );
return $fields;
}
And
class Person extends DataObject {
static $icon = "themes/art-vert/images/galleryicon";
static $db = array(
'Nom' => 'Text',
'Prenom' => 'Text',
'DateNaissance' => 'Date',
'Email' => 'Text',
);
static $has_one = array (
'Category' => 'Category',
'Photo' => 'Image'
);
static $belongs_many_many = array(
'Teams' => 'Team',
);
static $allowed_children = array('');
function getCMSFields_forPopup() {
$fields = new FieldSet();
$fields->push( new TextField('Nom'));
$fields->push( new TextField('Prenom'));
$fields->push( new DateField('DateNaissance'));
$fields->push( new TextField('Email'));
$cats = DataObject::get('Category');
if(count($cats->Count())) {
$catOptions = array();
foreach($cats as $cat) {
$catOptions[$cat->ID] = $cat->Poid;
}
}
$fields->push(new DropdownField('CategoryID','Category', $catOptions));
$fields->push(new ImageField('Photo'));
return $fields;
}
function getCMSFields() {
$fields = parent::getCMSFields();
$fields->addFieldToTab( 'Root.Content.Images', new ImageField ('Photo'));
$fields->addFieldToTab( 'Root.Content.Main', new TextField( 'Annee' ) );
$fields->addFieldToTab( 'Root.Content.Main', new TextField( 'Prenom' ) );
$fields->addFieldToTab( 'Root.Content.Main', new DateField( 'DateNaissance' ) );
$fields->addFieldToTab( 'Root.Content.Main', new TextField( 'Email' ) );
$cats = DataObject::get('Category');
if(count($cats->Count())) {
$catOptions = array();
foreach($cats as $cat) {
$catOptions[$cat->ID] = $cat->Poid;
}
}
/* $fields->addFieldToTab('Root.Content.Main', new DropdownField('CategoryID','Category', $catOptions)); */
return $fields;
}
public function getCategory() {
return "a Text";
}
function getThumbnail() {
$Image = $this->Photo();
if ( $Image ) {
return $Image->CMSThumbnail();
} else {
return null;
}
}