【发布时间】:2015-11-11 08:53:43
【问题描述】:
我希望能够使用 ListBoxField 将团队成员与项目相关联。我有一个ProjectHolder,它有Project 页面作为它的孩子。我还有一个TeamHolder,它的子代是TeamPage。
我希望能够在ListBoxField 中保存多个团队成员,然后在Project 页面上循环访问他们。我还希望能够链接到团队成员页面。例如
<% loop $TeamMemberNames %>
<a href="$Link">$Name</a>
<% end_loop %>
我当前的代码:
TeamPage.php
class TeamPage extends Page
{
private static $db = array(
'Name' => 'Varchar(255)',
);
public function getCMSFields() {
$fields = parent::getCMSFields();
$fields->addFieldToTab('Root.TeamMembers', TextField::create('Name'));
return $fields;
}
}
Project.php
class Project extends Page
{
private static $db = array(
'Name' => 'Varchar(255)',
);
public function getCMSFields() {
$fields = parent::getCMSFields();
$fields->addFieldToTab('Root.TeamMembers', TextField::create('Name'));
$fields->addFieldToTab('Root.TeamMembers', ListBoxField::create(
'TeamPage',
'Select Team Members for project',
TeamPage::get()->map("ID", "Name")->toArray()
)->setMultiple(true));
return $fields;
}
}
截图:
我可以将名称从 TeamPage 对象提取到 ListBoxField 但是在选择名称后,我需要一种方法来保存多个值并获取链接,以便我可以链接到相应的团队成员页面被列为。
【问题讨论】:
-
您需要先定义如何将其保存在数据库中。我猜一个成员可以加入很多项目,一个项目有很多成员,你需要一个 $many_many 关系。你上课了吗? silverstripe.org/learn/lessons 那里的教程应该涵盖所有内容。
标签: silverstripe