- Issue created by @joshua1234511
- Merge request !105[3470873] Fixed TypeError: count(): Argument #1 ($value) must be of type... → (Open) created by joshua1234511
- Status changed to Needs review
6 months ago 3:30am 29 August 2024 - Status changed to Needs work
6 months ago 2:20pm 3 September 2024 - 🇫🇷France dqd London | N.Y.C | Paris | Hamburg | Berlin
The solution is somewhat doubling the condition check and could be more performant by using nested checks:
instead of
// @@ -76,7 +76,8 @@ class DomainElementManager implements DomainElementManagerInterface { if ((isset($form[$field_name]['widget']['#options']) && count($form[$field_name]['widget']['#options']) === 0) || (isset($form[$field_name]['widget']['#options']) && count($form[$field_name]['widget']['#options']) === 1 && isset($form[$field_name]['widget']['#options']['_none'])) ) { $empty = TRUE;
maybe like:
// @@ -76,7 +76,8 @@ class DomainElementManager implements DomainElementManagerInterface { if ((isset($form[$field_name]['widget']['#options']) if (count($form[$field_name]['widget']['#options']) === 0) || (count($form[$field_name]['widget']['#options']) === 1 && isset($form[$field_name]['widget']['#options']['_none'])) ) ) { $empty = TRUE;
- 🇮🇷Iran amir jamshidi
I made this condition like this
if ((isset($form[$field_name]['widget']['#options']) && count($form[$field_name]['widget']['#options']) === 0) || (isset($form[$field_name]['widget']['#options']) && count($form[$field_name]['widget']['#options']) === 1 && isset($form[$field_name]['widget']['#options']['_none'])) ) { $empty = TRUE; }
While I can confirm the code in #5 does work on D10.3, it is simply a repetition of what's in the merge request mentioned in #3. I agree with dqd in #4 that the change could be rewritten, but the code in that comment isn't quite right and would be a breaking change, so I've tweaked it in the patch attached here, which does work for me.
- 🇺🇸United States earthday47 New York
Here's my +1 comment - We are experiencing this issue and I can confirm that the patch in #6 resolves it.
- 🇬🇧United Kingdom therobyouknow
I also found #6 https://www.drupal.org/project/domain/issues/3470873#comment-15844907 🐛 TypeError: count(): Argument #1 ($value) must be of type Countable|array, null given in count() (line 79 of modules/contrib/domain/domain/src/DomainElementManager.php). Active to work, in that I don't now see that fatal error, the title of this issue "TypeError: count(): Argument #1 ($value) must be of type Countable|array, null given in count() (line 79 of modules/contrib/domain/domain/src/DomainElementManager.php)". I needed to clear cache.
Thank you!
However, I get a warning on the node add/edit page: "Warning: Undefined array key "#options" in Drupal\domain\DomainElementManager->setFormOptions() (line 79 of modules/contrib/domain/domain/src/DomainElementManager.php)."
But I can get by. Hope for a fix for the warning (or even to help provide one), when I can.
- Status changed to Needs review
about 2 months ago 6:57pm 10 January 2025 - 🇪🇸Spain guiu.rocafort.ferrer Barcelona
I managed to reproduce this error when using a "Autocomplete" or "Autocomplete (Tags style)" for the field "Domain Access" in the manage form display configuration for the content type.
Clearly the code does not contemplate the possibility of using those field widgets for this field, so the patches do not fix the root cause of the issue.
- Merge request !133Draft: #3470873: Refactor empty options check in two methods, for select/checkboxes... → (Open) created by guiu.rocafort.ferrer
- 🇪🇸Spain guiu.rocafort.ferrer Barcelona
The code now checks if the widget is of type checkbox/select, or if the widget is autocomplete.
If the code is checkbox/select, it does the same as before, but with an autocomplete field, it initializes the selection plugin and calls countReferenceableEntities() instead.
Regarding the 'Chosen' module, i have not tried it, but it should not throw an error and just not hide the field if there is no domain available.