Ich habe Schwierigkeiten, eine Variable in einer Vorlage zu erhalten, die eine GroupedList von DataObjects enthält, die eine has_one-Beziehung zu einem anderen DataObject haben.Silverstripe gruppierte Liste DataObjects - Variable von has_one in Vorlage erhalten
Beispiel: Ich habe das DataObject-Team gehört zu einer Region. Wenn ich eine gruppierte Liste der Teams erhalte, gruppiert nach der RegionID, kann ich nicht herausfinden, wie ich auf die Region.NAME in der Vorlage zugreifen kann.
class Region extends DataObject {
private static $db = array (
'NAME' => 'Varchar(128)',
'INFO' => 'Varchar(128)',
'PUBLIC' => 'Boolean'
);
public static $has_many = array(
'Teams' => 'Team'
);
}
class Team extends DataObject {
private static $db = array (
'NAME' => 'Varchar(255)',
'LEAGUE' => 'Varchar(255)',
'SORTNO' => 'Int'
);
public static $has_one = array(
'Region' => 'Region'
);
}
class TeamRegionPage extends Page {
public function getRegionGroupedTeams(){
return GroupedList::create(Team::get()->filter(array('PUBLIC' => 1))->sort('RegionID, SORTNO'));
}
}
TeamRegionPage.ss
<% loop $getRegionGroupedTeams.GroupedBy(RegionID) %>
<h2>Region name from has_one here: {$Region.NAME}</h2>
<% loop $Children %>
$NAME<br>
<% end_loop %>
$ Region.NAME arbeiten in der Vorlage nicht und ich versuchte, ein paar andere Dinge. Ich habe das Gefühl, dass die Lösung ziemlich offensichtlich ist, aber ich kann es nicht sehen und ich stecke fest.
Danke, das funktioniert super für meine Situation. Wenn es komplexer wird, mache ich vielleicht manuelle Schleifen, wie es Onkel Cheese vorgeschlagen hat. (Die UPPER-Case-Feldnamen sind eine Vermächtnis-Sache ...) – kiwiana
Ich habe '$ Children.First.Region.NAME' abgekürzt, jetzt können Sie es ohne '<% with ..%>' verwenden –