Php 银条3.1-一名球员拥有多支球队
我正试图创建一个这样的团队列表 团队负责人-适用于所有团队。小时候有团队页面 团队页面-团队的描述和图像。并且还与团队成员(Dataobject)有一个关系 TeamMember-具有成员。在这里,您还应该能够定义球员所在的球队。这是我的代码。但我不知道如何才能使我的球队页面有很多联系,这样你就可以为一名球员选择多支球队。有人能解决这个问题吗 thx提前如果你想让一个玩家(团队成员)在多个团队中,并且团队中有多个玩家,你需要多个。如果你在这里使用has_many,那么球队将有一个PlayerID,这意味着每个球队只能有一名球员Php 银条3.1-一名球员拥有多支球队,php,silverstripe,Php,Silverstripe,我正试图创建一个这样的团队列表 团队负责人-适用于所有团队。小时候有团队页面 团队页面-团队的描述和图像。并且还与团队成员(Dataobject)有一个关系 TeamMember-具有成员。在这里,您还应该能够定义球员所在的球队。这是我的代码。但我不知道如何才能使我的球队页面有很多联系,这样你就可以为一名球员选择多支球队。有人能解决这个问题吗 thx提前如果你想让一个玩家(团队成员)在多个团队中,并且团队中有多个玩家,你需要多个。如果你在这里使用has_many,那么球队将有一个PlayerI
class TeamPage extends Page {
private static $many_many = array('TeamMembers' => 'TeamMember');
public function getCMSFields() {
$fields = parent::getCMSFields();
$fields->addFieldToTab('Root', Tab::create('MembersTab', 'Team Members'));
$fields->addFieldToTab('Root.MembersTab', GridField::create('TeamMembers', 'The Team Members', $this->TeamMembers(), GridFieldConfig_RelationEditor::create());
return $fields;
}
}
class TeamMember extends DataObject {
private static $belongs_many_many = array('Teams' => 'TeamPage');
public function getCMSFields() {
$fields = FieldList::create();
if (!$this->isInDB()) {
// if the TeamMember has not been saved yet, display a message that it needs to be saved before teams can be assigned
$fields->push(ReadOnlyField::create('Teams', '', 'Save to assign Teams'));
} else {
$config = GridFieldConfig_RelationEditor::create();
// if you don't want the "add a new team" button on this grid, you can remove that with the following line:
// $config->removeComponentsByType('GridFieldAddNewButton');
$fields->push(GridField::create('Teams', 'Team this Member is in', $this->Teams(), $config);
}
return $fields;
}
}
这里请注意,我使用了
GridFieldConfig\u RelationEditor
而不是GridFieldConfig\u RecordEditor
,它向网格字段添加了一个GridFieldAddExistingAutocompleter
,让您可以链接对象。团队成员有多个团队?团队成员不应该只有一个团队,而一个团队可以有多个团队成员吗?如果是这样,TeamPage
将与TeamMember
有一个关系,而TeamMember
将与TeamPage
有一个关系。如果一个团队成员可以有多个团队,并且一个团队可以有多个团队成员,那么您需要在这两者之间建立一个many\u many
关系。所以TeamPage
会有一个many
链接到TeamMember
,而TeamMember
会有一个归属的
链接回到TeamPage
嗨,这似乎很好:)但是在添加新成员时有没有办法删除“添加TeamPage”按钮?什么“添加TeamPage”按钮?你能做一个截图吗?如果你添加了一个新成员,那么你就有了这个选项。您可以通过调用gridfield配置上的removeComponentsByType('GridFieldAddNewButton')
从gridfield中删除该按钮。我在回答中更新了代码示例,将其作为注释包含。是的,这是可能的,但在摘要字段中使用了自定义方法。但这是另一个问题,你介意为此提出一个新问题吗?标题可以是这样的:“在GridField中显示来自多个关系的标题”