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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | 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.