GridField サマリーで many_many リレーションからタイトルを表示するにはどうすればよいですか?
RelationName.Title で試してみましたが、結果は空のフィールドだけでした
GridField サマリーで many_many リレーションからタイトルを表示するにはどうすればよいですか?
RelationName.Title で試してみましたが、結果は空のフィールドだけでした
colymbaの回答はすでにほとんどのことを述べていますが、さらに でメソッドを指定することもできます$summary_fields
。これにより、GridField に画像のサムネイルを表示したり、必要に応じて many_many 関係のタイトルから独自の文字列をつなぎ合わせたりすることができます。
class TeamMember extends DataObject {
private static $db = array(
'Title' => 'Text',
'Birthday' => 'Date',
);
private static $has_one = array(
'Photo' => 'Image'
);
private static $has_many = array(
'Teams' => 'Team'
);
private static $summary_fields = array(
'PhotoThumbnail',
'Title',
'Birthday',
'TeamsAsString',
);
public function getPhotoThumbnail() {
// display a thumbnail of the Image from the has_one relation
return $this->Photo() ? $this->Photo()->CroppedImage(50,50) : '';
}
public function getTeamsAsString() {
if (!$this->Teams()) {
return 'not in any Team';
}
return implode(', ', $this->Teams()->Column('Title'));
// or if one field is not enough for you, you can use a foreach loop:
// $teamsArray= array();
// foreach ($this->Teams() as $team) {
// $teamsArray[] = "{$team->ID} {$team->Title}";
// }
// return implode(', ', $teamsArray);
}
}
コリンバが指摘したように、setDisplayFields
別のグリッドで別のフィールドを使用するために使用できる代替手段