mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
Merge pull request #2373 from chillu/pulls/treedropdown-searchfield-default
Default TreeDropdown to "Title" search if $labelField isn't in DB
This commit is contained in:
commit
c309867a1c
@ -93,7 +93,7 @@ class TreeDropdownField extends FormField {
|
|||||||
$this->keyField = $keyField;
|
$this->keyField = $keyField;
|
||||||
$this->labelField = $labelField;
|
$this->labelField = $labelField;
|
||||||
$this->showSearch = $showSearch;
|
$this->showSearch = $showSearch;
|
||||||
|
|
||||||
parent::__construct($name, $title);
|
parent::__construct($name, $title);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -389,10 +389,32 @@ class TreeDropdownField extends FormField {
|
|||||||
*/
|
*/
|
||||||
protected function populateIDs() {
|
protected function populateIDs() {
|
||||||
// get all the leaves to be displayed
|
// get all the leaves to be displayed
|
||||||
if ( $this->searchCallback )
|
if ($this->searchCallback) {
|
||||||
$res = call_user_func($this->searchCallback, $this->sourceObject, $this->labelField, $this->search);
|
$res = call_user_func($this->searchCallback, $this->sourceObject, $this->labelField, $this->search);
|
||||||
else
|
} else {
|
||||||
$res = DataObject::get($this->sourceObject, "\"$this->labelField\" LIKE '%$this->search%'");
|
$sourceObject = $this->sourceObject;
|
||||||
|
$wheres = array();
|
||||||
|
if(singleton($sourceObject)->hasDatabaseField($this->labelField)) {
|
||||||
|
$wheres[] = "\"$searchField\" LIKE '%$this->search%'";
|
||||||
|
} else {
|
||||||
|
if(singleton($sourceObject)->hasDatabaseField('Title')) {
|
||||||
|
$wheres[] = "\"Title\" LIKE '%$this->search%'";
|
||||||
|
}
|
||||||
|
if(singleton($sourceObject)->hasDatabaseField('Name')) {
|
||||||
|
$wheres[] = "\"Name\" LIKE '%$this->search%'";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!$wheres) {
|
||||||
|
throw new InvalidArgumentException(sprintf(
|
||||||
|
'Cannot query by %s.%s, not a valid database column',
|
||||||
|
$sourceObject,
|
||||||
|
$this->labelField
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
$res = DataObject::get($this->sourceObject, implode(' OR ', $wheres));
|
||||||
|
}
|
||||||
|
|
||||||
if( $res ) {
|
if( $res ) {
|
||||||
// iteratively fetch the parents in bulk, until all the leaves can be accessed using the tree control
|
// iteratively fetch the parents in bulk, until all the leaves can be accessed using the tree control
|
||||||
|
Loading…
Reference in New Issue
Block a user