输出到模板,要使用哪个变量?

时间:2016-04-15 13:53:50

标签: silverstripe

我有一个模板,需要显示已通过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获取多项内容,例如Firstname,Surname,ImageURL

1 个答案:

答案 0 :(得分:2)

哇终于让它工作我需要它了!

我遗漏的是在尝试添加到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 %>

将数据输出到我需要的地方!