mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 12:05:37 +00:00
FIX: Unable to access a list of all many_many_extraFields
This commit is contained in:
parent
18f7855794
commit
3a7e24a220
@ -1797,9 +1797,8 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
|
|||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
// Find all the extra fields for all components
|
// Find all the extra fields for all components
|
||||||
$newItems = eval("return (array){$class}::\$many_many_extraFields;");
|
$newItems = (array)Config::inst()->get($class, 'many_many_extraFields', Config::UNINHERITED);
|
||||||
|
|
||||||
foreach($newItems as $k => $v) {
|
foreach($newItems as $k => $v) {
|
||||||
if(!is_array($v)) {
|
if(!is_array($v)) {
|
||||||
@ -1812,9 +1811,11 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return isset($items) ? array_merge($newItems, $items) : $newItems;
|
$items = isset($items) ? array_merge($newItems, $items) : $newItems;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return isset($items) ? $items : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -918,6 +918,20 @@ class DataObjectTest extends SapphireTest {
|
|||||||
$player = $this->objFromFixture('DataObjectTest_Player', 'player1');
|
$player = $this->objFromFixture('DataObjectTest_Player', 'player1');
|
||||||
$team = $this->objFromFixture('DataObjectTest_Team', 'team1');
|
$team = $this->objFromFixture('DataObjectTest_Team', 'team1');
|
||||||
|
|
||||||
|
// Get all extra fields
|
||||||
|
$teamExtraFields = $team->many_many_extraFields();
|
||||||
|
$this->assertEquals(array(
|
||||||
|
'Players' => array('Position' => 'Varchar(100)')
|
||||||
|
), $teamExtraFields);
|
||||||
|
|
||||||
|
// Ensure fields from parent classes are included
|
||||||
|
$subTeam = singleton('DataObjectTest_SubTeam');
|
||||||
|
$teamExtraFields = $subTeam->many_many_extraFields();
|
||||||
|
$this->assertEquals(array(
|
||||||
|
'Players' => array('Position' => 'Varchar(100)'),
|
||||||
|
'FormerPlayers' => array('Position' => 'Varchar(100)')
|
||||||
|
), $teamExtraFields);
|
||||||
|
|
||||||
// Extra fields are immediately available on the Team class (defined in $many_many_extraFields)
|
// Extra fields are immediately available on the Team class (defined in $many_many_extraFields)
|
||||||
$teamExtraFields = $team->many_many_extraFields('Players');
|
$teamExtraFields = $team->many_many_extraFields('Players');
|
||||||
$this->assertEquals($teamExtraFields, array(
|
$this->assertEquals($teamExtraFields, array(
|
||||||
@ -1382,6 +1396,16 @@ class DataObjectTest_SubTeam extends DataObjectTest_Team implements TestOnly {
|
|||||||
private static $has_one = array(
|
private static $has_one = array(
|
||||||
"ParentTeam" => 'DataObjectTest_Team',
|
"ParentTeam" => 'DataObjectTest_Team',
|
||||||
);
|
);
|
||||||
|
|
||||||
|
private static $many_many = array(
|
||||||
|
'FormerPlayers' => 'DataObjectTest_Player'
|
||||||
|
);
|
||||||
|
|
||||||
|
private static $many_many_extraFields = array(
|
||||||
|
'FormerPlayers' => array(
|
||||||
|
'Position' => 'Varchar(100)'
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
class OtherSubclassWithSameField extends DataObjectTest_Team implements TestOnly {
|
class OtherSubclassWithSameField extends DataObjectTest_Team implements TestOnly {
|
||||||
private static $db = array(
|
private static $db = array(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user