我有一个模板,需要显示已通过 GridField 分配到该页面的用户。
当用户被分配到存储其 ID 的页面时,我将像这样检索该信息
class Shows_Controller extends Page_Controller {
# Get key people from ShowsContact class / input via ShowsContact GridField
public function getKeyPeople(){
if($this->ShowsContacts()->exists()){
$result = array();
foreach($this->ShowsContacts()->column('MemberID') as $teamMemberID){
array_push($result, Member::get()->byID($teamMemberID)->Nickname);
}
var_dump($result); # Using var_dump here to see if I get what I need...
}
}
}
我尝试过使用 SilverStripes ArrayList,但也无法使其工作 - 这是同样的事情,但使用 ArrayList...
$result = new ArrayList();
foreach($this->ShowsContacts()->column('MemberID') as $teamMemberID){
$result->add(Member::get()->byID($teamMemberID)->Nickname);
}
var_dump($result);
这个输出是我所期望的,但我不明白如何循环结果以及我需要使用什么变量以便循环在我的模板中显示结果..?
var_dump 的结果是这样的,我需要将这些名称获取到网页的相关部分
array(3) {
[0]=>
string(6) "vlad-s"
[1]=>
string(10) "lawrence-r"
[2]=>
string(8) "darren-g"
}
我也尝试过使用
<% with %>
,但这也不起作用
编辑
顺便提一下,我目前只是想获取用户名,但需要从 ID 中获取多项内容,例如名字、姓氏、ImageURL
哇终于让它按照我需要的方式工作了!
我缺少的是在尝试添加到
ArrayData()
时使用
ArrayList()
这是工作代码
class Shows_Controller extends Page_Controller {
# Get key people from ShowsContact class // input via ShowsContact GridField
public function getKeyPeople(){
if($this->ShowsContacts()->exists()){
$result = new ArrayList();
foreach($this->ShowsContacts()->column('MemberID') as $teamMemberID){
$result->add(new ArrayData(array(
'Nickname' =>Member::get()->byID($teamMemberID)->Nickname
)
));
}
return $result;
}
}
}
现在在我的模板中我可以使用
<% loop KeyPeople %>
$Nickname
<% end_loop %>
将数据取出到我需要的地方!