我们的网站有一个名为"TrailNotice"的对象,它与页面类型"TrailSection"有很多关系.
class TrailNotice extends DataObject {
private static $many_many = array(
'TrailSections' => 'TrailSection'
);
Run Code Online (Sandbox Code Playgroud)
这允许通过CMS中的复选框在多个TrailSections中应用单个TrailNotice:
$fields->addFieldToTab('Root.Main', new CheckboxSetField('TrailSections', 'Applies to which trail sections?', DataObject::get('TrailSection')->map('ID', 'Title')));
Run Code Online (Sandbox Code Playgroud)
如何在TrailSection页面控制器中显示附加到TrailSection的TrailNotices?
我从以下代码开始:
class TrailSection_Controller extends Page_Controller {
public function TrailNotices(){
$TrailNotices = DataObject::get('TrailNotice');
return $TrailNotices;
}
Run Code Online (Sandbox Code Playgroud)
但这将获得所有TrailNotice对象.如何过滤它们以便只显示附加到TrailSection的TrailNotices?
您需要在两种方式上定义many_many,然后您可以从两侧访问它.一方有一个$many_many
class TrailNotice extends DataObject {
private static $many_many = array(
'TrailSections' => 'TrailSection'
);
Run Code Online (Sandbox Code Playgroud)
另一方面你必须定义 $belongs_many_many
class TrailSection extends DataObject {
private static $belongs_many_many = array(
'TrailNotices' => 'TrailNotice'
);
Run Code Online (Sandbox Code Playgroud)
然后在您的模板中,您可以调用关系列表并循环遍历它:
<% loop $TrailNotices %>
$Title
<% end_loop %>
Run Code Online (Sandbox Code Playgroud)
看到
所有可能的关系(感谢@nightjar提供图形).
| 归档时间: |
|
| 查看次数: |
1087 次 |
| 最近记录: |