function testScaffoldSearchFields() { $autoCompleter = new GridFieldAddExistingAutocompleter($targetFragment = 'before', array('Test')); $gridFieldTest_Team = singleton('GridFieldTest_Team'); $this->assertEquals($autoCompleter->scaffoldSearchFields('GridFieldTest_Team'), array('Name:PartialMatch', 'City:StartsWith', 'Cheerleaders.Name:StartsWith')); $this->assertEquals($autoCompleter->scaffoldSearchFields('GridFieldTest_Cheerleader'), array('Name:StartsWith')); }
/** * Detect searchable fields and searchable relations * Only has_many relations may be searched. * Falls back to Title or Name if no earchableFields are defined. * * @param string $dataClass The class name to get fields for * * @return array * * @return array|null * * @author Sebastian Diel <*****@*****.**> * @since 15.04.2014 */ public function scaffoldSearchFields($dataClass) { $fields = parent::scaffoldSearchFields($dataClass); $has_many = Config::inst()->get($dataClass, 'has_many'); $many_many = Config::inst()->get($dataClass, 'many_many'); $belongs_many_many = Config::inst()->get($dataClass, 'belongs_many_many'); foreach ($fields as $key => $value) { if (strpos($value, '.') !== false) { $parts = explode('.', $value, 2); $relationName = $parts[0]; $searchField = $parts[1]; if (is_array($has_many) && array_key_exists($relationName, $has_many)) { $fields[$key] = $has_many[$relationName] . '.' . $searchField; } elseif (is_array($many_many) && array_key_exists($relationName, $many_many)) { unset($fields[$key]); } elseif (is_array($belongs_many_many) && array_key_exists($relationName, $belongs_many_many)) { unset($fields[$key]); } } } return $fields; }