From 17c6f98ba2096a6616b7af1a759ee5aa79546876 Mon Sep 17 00:00:00 2001 From: Maxime Rainville Date: Wed, 20 Jan 2021 12:23:09 +1300 Subject: [PATCH] BUG Fix PostgreSQL issue in TreeMultiselectField where field would try to filter list by a blank ID --- src/Forms/TreeMultiselectField.php | 4 ++++ tests/php/Forms/TreeMultiselectFieldTest.php | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/src/Forms/TreeMultiselectField.php b/src/Forms/TreeMultiselectField.php index 2857a5c30f1..de523dd392a 100644 --- a/src/Forms/TreeMultiselectField.php +++ b/src/Forms/TreeMultiselectField.php @@ -149,12 +149,16 @@ public function getItems() // Parse ids from value string / array $ids = []; + if (is_string($value)) { $ids = preg_split("#\s*,\s*#", trim($value)); } elseif (is_array($value)) { $ids = array_values($value); } + // Filter out empty strings + $ids = array_filter($ids); + // No value if (empty($ids)) { return ArrayList::create(); diff --git a/tests/php/Forms/TreeMultiselectFieldTest.php b/tests/php/Forms/TreeMultiselectFieldTest.php index 78d8b0190e7..c0d7ea2e94d 100644 --- a/tests/php/Forms/TreeMultiselectFieldTest.php +++ b/tests/php/Forms/TreeMultiselectFieldTest.php @@ -340,5 +340,12 @@ function ($folder) { [], $field->getItems() ); + + // Andle empty string none value + $field->setValue(''); + $this->assertListEquals( + [], + $field->getItems() + ); } }