public BookAdminEditForm::submitForm(array &$form, FormStateInterface $form_state)
Form submission handler.
Parameters
array $form: An associative array containing the structure of the form.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Overrides FormInterface::submitForm
File
- core/modules/book/src/Form/BookAdminEditForm.php, line 93
Class
- BookAdminEditForm
- Provides a form for administering a single book's hierarchy.
Namespace
Drupal\book\Form
Code
public function submitForm(array &$form, FormStateInterface $form_state) { // Save elements in the same order as defined in post rather than the form. // This ensures parents are updated before their children, preventing orphans. $user_input = $form_state->getUserInput(); if (isset($user_input['table'])) { $order = array_flip(array_keys($user_input['table'])); $form['table'] = array_merge($order, $form['table']); foreach (Element::children($form['table']) as $key) { if ($form['table'][$key]['#item']) { $row = $form['table'][$key]; $values = $form_state->getValue(array('table', $key)); // Update menu item if moved. if ($row['parent']['pid']['#default_value'] != $values['pid'] || $row['weight']['#default_value'] != $values['weight']) { $link = $this->bookManager->loadBookLink($values['nid'], FALSE); $link['weight'] = $values['weight']; $link['pid'] = $values['pid']; $this->bookManager->saveBookLink($link, FALSE); } // Update the title if changed. if ($row['title']['#default_value'] != $values['title']) { $node = $this->nodeStorage->load($values['nid']); $node->revision_log = $this->t('Title changed from %original to %current.', array('%original' => $node->label(), '%current' => $values['title'])); $node->title = $values['title']; $node->book['link_title'] = $values['title']; $node->setNewRevision(); $node->save(); $this->logger('content')->notice('book: updated %title.', array('%title' => $node->label(), 'link' => $node->link($this->t('View')))); } } } } drupal_set_message($this->t('Updated book %title.', array('%title' => $form['#node']->label()))); }
Please login to continue.