nuvoleweb / ui_patterns

[NOTE] Development has moved to https://drupal.org/project/ui_patterns
https://drupal.org/project/ui_patterns
GNU General Public License v2.0
85 stars 56 forks source link

Invalid argument supplied for foreach() in /var/www/html/www/modules/contrib/ui_patterns/modules/ui_patterns_library/src/Plugin/Deriver/LibraryDeriver.php on line 141 #349

Open MaxCSwann opened 2 years ago

MaxCSwann commented 2 years ago

Hi guys,

I've found an error when creating an empty ui_patterns.yml file. The getPatterns() function in /var/www/html/www/modules/contrib/ui_patterns/modules/ui_patterns_library/src/Plugin/Deriver/LibraryDeriver.php attempts to run Yaml::decode($content) and pass that as an argument to the foreach() function. When the file is empty $content returns an empty string which causes the foreach() to fail.

For anyone who comes across this problem and doesnt want to roll a patch the obvious solution is to just remove any empty ui_patterns.yml files. Else, just run an empty string check.

+ if (!empty($content)) {
  foreach (Yaml::decode($content) as $id => $definition) {
    $definition['id'] = $id;
    $definition['base path'] = dirname($file_path);
    $definition['file name'] = basename($file_path);
    $definition['provider'] = $provider;
    $patterns[] = $this->getPatternDefinition($definition);
  }
+ }