mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
Do not hang on nested parameters in search context
This commit is contained in:
parent
d0fe105045
commit
c39cf2d55f
@ -212,7 +212,7 @@ abstract class ModelAdmin extends LeftAndMain {
|
|||||||
$params = $this->getRequest()->requestVar('q');
|
$params = $this->getRequest()->requestVar('q');
|
||||||
|
|
||||||
if(is_array($params)) {
|
if(is_array($params)) {
|
||||||
$params = array_map('trim', $params);
|
$params = ArrayLib::array_map_recursive('trim', $params);
|
||||||
}
|
}
|
||||||
|
|
||||||
$list = $context->getResults($params);
|
$list = $context->getResults($params);
|
||||||
|
@ -163,6 +163,23 @@ class ArrayLib {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Similar to array_map, but recurses when arrays are encountered.
|
||||||
|
*
|
||||||
|
* Actually only one array argument is supported.
|
||||||
|
*
|
||||||
|
* @param $f callback to apply
|
||||||
|
* @param $array array
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function array_map_recursive($f, $array) {
|
||||||
|
$applyOrRecurse = function($v) use($f) {
|
||||||
|
return is_array($v) ? ArrayLib::array_map_recursive($f, $v) : call_user_func($f, $v);
|
||||||
|
};
|
||||||
|
|
||||||
|
return array_map($applyOrRecurse, $array);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Recursively merges two or more arrays.
|
* Recursively merges two or more arrays.
|
||||||
*
|
*
|
||||||
|
@ -48,6 +48,29 @@ class ArrayLibTest extends SapphireTest {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testArrayMapRecursive() {
|
||||||
|
$array = array(
|
||||||
|
'a ',
|
||||||
|
array(' b', 'c'),
|
||||||
|
);
|
||||||
|
$strtoupper = array(
|
||||||
|
'A ',
|
||||||
|
array(' B', 'C'),
|
||||||
|
);
|
||||||
|
$trim = array(
|
||||||
|
'a',
|
||||||
|
array('b', 'c'),
|
||||||
|
);
|
||||||
|
$this->assertEquals(
|
||||||
|
$strtoupper,
|
||||||
|
ArrayLib::array_map_recursive('strtoupper', $array)
|
||||||
|
);
|
||||||
|
$this->assertEquals(
|
||||||
|
$trim,
|
||||||
|
ArrayLib::array_map_recursive('trim', $array)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public function testArrayMergeRecursive() {
|
public function testArrayMergeRecursive() {
|
||||||
$first = array(
|
$first = array(
|
||||||
'first' => 'a',
|
'first' => 'a',
|
||||||
|
Loading…
Reference in New Issue
Block a user