如何在模板中渲染has_many?

时间:2017-07-04 12:55:56

标签: php silverstripe

我有两个类:LetterLetterFiles(附件中的文件):

class Letter extends DataObject {
    private static $db = array(
        'Sender' => 'Text',
        'SendTo' => 'Text',
        ...
    );

    private static $has_many = array(
        'Letters' => 'LetterFiles'
    );
    ...
}

class LetterFiles extends File {
    private static $has_one = array(
        'Files' => 'Letter'
    );
    ...
}

我想在LetterPage上显示所有字母和所有附件:

class LetterPage extends Page {
}

class LetterPage_Controller extends Page_Controller {
    public function index() {
        $letters = Letter::get()->sort('DateUpload');
        return array(
            'AllLetters' => $letters
        );
    }
}

我尝试使用模板LetterPage.ss

   <% loop $AllLetters %>
        <tr>
            ...
            <td>$Sender</td>
            <td>$SendTo</td>
            <td>$Theme</td>
            <td>
                  <% loop $Files %>
                      $Name
                  <% end_loop %>
            </td>
        </tr>
   <% end_loop %>

但是<% loop $Files %>不起作用。如何在此模板中显示附件?

1 个答案:

答案 0 :(得分:5)

认为你只是使用了错误的关系名称,应该是Letters而不是Files:

<% loop AllLetters %>
    $Sender
    $SendTo
    <% loop Letters %>
        $ID
    <% end_loop %>
<% end_loop %>