Problem/Motivation
In the form of adding a new rule of "Menu Position", when adding without filling the menu parent field, the following errors appear:
Deprecated function: explode(): Passing null to parameter #2 ($string) of type string is deprecated na Drupal\menu_position\Form\MenuPositionRuleForm->validateForm() (linha 249 de /var/www/html/web/modules/contrib/menu_position/src/Form/MenuPositionRuleForm.php)
#0 /var/www/html/web/core/includes/bootstrap.inc(347): _drupal_error_handler_real(8192, 'explode(): Pass...', '/var/www/html/w...', 249)
#1 [internal function]: _drupal_error_handler(8192, 'explode(): Pass...', '/var/www/html/w...', 249)
#2 /var/www/html/web/modules/contrib/menu_position/src/Form/MenuPositionRuleForm.php(249): explode(':', NULL)
...
Warning: Undefined array key 1 na Drupal\menu_position\Form\MenuPositionRuleForm->validateForm() (linha 249 de /var/www/html/web/modules/contrib/menu_position/src/Form/MenuPositionRuleForm.php)
#0 /var/www/html/web/core/includes/bootstrap.inc(347): _drupal_error_handler_real(2, 'Undefined array...', '/var/www/html/w...', 249)
#1 /var/www/html/web/modules/contrib/menu_position/src/Form/MenuPositionRuleForm.php(249): _drupal_error_handler(2, 'Undefined array...', '/var/www/html/w...', 249)
#2 [internal function]: Drupal\menu_position\Form\MenuPositionRuleForm->validateForm(Array, Object(Drupal\Core\Form\FormState))
#3 /var/www/html/web/core/lib/Drupal/Core/Form/FormValidator.php(82): call_user_func_array(Array, Array)
#4 /var/www/html/web/core/lib/Drupal/Core/Form/FormValidator.php(275): Drupal\Core\Form\FormValidator->executeValidateHandlers(Array, Object(Drupal\Core\Form\FormState))
#5 /var/www/html/web/core/lib/Drupal/Core/Form/FormValidator.php(118): Drupal\Core\Form\FormValidator->doValidateForm(Array, Object(Drupal\Core\Form\FormState), 'menu_position_r...')
#6 /var/www/html/web/core/lib/Drupal/Core/Form/FormBuilder.php(588): Drupal\Core\Form\FormValidator->validateForm('menu_position_r...', Array, Object(Drupal\Core\Form\FormState))
#7 /var/www/html/web/core/lib/Drupal/Core/Form/FormBuilder.php(320): Drupal\Core\Form\FormBuilder->processForm('menu_position_r...', Array, Object(Drupal\Core\Form\FormState))
Steps to reproduce
On the add a new rule page of "Menu Position" (/admin/structure/menu-position/add), add a rule without filling in the parent menu field.
Proposed resolution
Make validations so that NULL is not returned inside functions.
Referenced Code
/**
* {@inheritdoc}
*/
public function validateForm(array &$form, FormStateInterface $form_state) {
// Don't allow the user to select a menu name instead of a menu item.
list($menu_name, $parent) = array_filter(explode(':', $form_state->getValue('parent') ?? "")) ?: [NULL, NULL];
if (empty($parent)) {
$form_state->setErrorByName('parent', $this->t('Please select a menu item. You have selected the name of a menu.'));
}
...
}
Remaining tasks
None.
User interface changes
None.
API changes
None.
Data model changes
None.