Drupal Answers Asked on October 26, 2021
I am trying to add an extra text field to the menu entity. My field is showing up and saving input but the input saves for all menus not just the one I entered the data for.
This is how it is now:
function myModule_form_alter(&$form, $form_state, $form_id) {
if ($form_id == 'menu_edit_form') {
$config = Drupal::service('config.factory')->getEditable('myModule.settings');
$my_field = $config->get('my_field');
$form['my_field'] = array(
'#type' => 'textfield',
'#title' => t('Title'),
'#default_value' => $my_field,
'#weight' => '0',
'#required' => FALSE,
);
$form['actions']['submit']['#submit'][] = 'myModule_menu_edit_submit';
}
}
function myModule_menu_edit_submit($form, $form_state) {
$config = Drupal::service('config.factory')->getEditable('myModule.settings');
$config->set('my_field', $form_state->getValue('my_field'))->save();
}
I need to save different data for each form, so I was trying to do change the submit function to:
function myModule_menu_edit_submit($form, $form_state) {
$key = $form_state->getformObject()->getEntity()->id();
$config = Drupal::service('config.factory')->getEditable('myModule.settings');
$config->set($key, $form_state->getValue('my_field'))->save();
}
If I do this though, when I enter the data in the field and save, it says updated successfully but the field is blank. Not sure what I’m doing wrong.
I figured out how to add a field to the menus (not menu links, the actual menus). I use the machine name of the menu's title as a key and store the value with the key I use in the $form
variable.
Here is my code:
function myModule_form_menu_edit_form_alter(&$form, $form_state, $form_id) {
$config = Drupal::service('config.factory')->getEditable('myModule.settings');
$my_field = $config->get(str_replace('-', '_', $form_state->getformObject()->getEntity()->id()));
$form['my_field'] = array(
'#type' => 'textfield',
'#title' => t('Title'),
'#default_value' => $my_field,
'#weight' => '0',
'#required' => FALSE,
);
$form['actions']['submit']['#submit'][] = 'myModule_custom_submit';
}
function myModule_custom_submit($form, $form_state) {
$key = str_replace('-', '_', $form_state->getformObject()->getEntity()->id());
$config = Drupal::service('config.factory')->getEditable('myModule.settings');
$config->set($key, $form_state->getValue('my_field'))->save();
}
Answered by Jordan on October 26, 2021
1 Asked on December 4, 2020 by miststudent2011
1 Asked on December 3, 2020 by vaibhav-rana
1 Asked on November 30, 2020 by rick1
1 Asked on November 29, 2020 by alaa-haddad
1 Asked on November 18, 2020 by hiranya-sarma
1 Asked on November 13, 2020 by paul-h
2 Asked on October 21, 2020 by wbeasley
1 Asked on October 9, 2020 by sivaji
1 Asked on October 4, 2020 by anders-wallenquist
1 Asked on October 1, 2020 by travis-miller
1 Asked on October 1, 2020 by user3686276
0 Asked on September 13, 2020 by hendrik-kaiser
Get help from others!
Recent Answers
Recent Questions
© 2023 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP