function BlockContentForm::save

Same name in other branches
  1. 9 core/modules/block_content/src/BlockContentForm.php \Drupal\block_content\BlockContentForm::save()
  2. 10 core/modules/block_content/src/BlockContentForm.php \Drupal\block_content\BlockContentForm::save()
  3. 11.x core/modules/block_content/src/BlockContentForm.php \Drupal\block_content\BlockContentForm::save()

Overrides EntityForm::save

File

core/modules/block_content/src/BlockContentForm.php, line 45

Class

BlockContentForm
Form handler for the custom block edit forms.

Namespace

Drupal\block_content

Code

public function save(array $form, FormStateInterface $form_state) {
    $block = $this->entity;
    $insert = $block->isNew();
    $block->save();
    $context = [
        '@type' => $block->bundle(),
        '%info' => $block->label(),
    ];
    $logger = $this->logger('block_content');
    $block_type = $this->getBundleEntity();
    $t_args = [
        '@type' => $block_type->label(),
        '%info' => $block->label(),
    ];
    if ($insert) {
        $logger->notice('@type: added %info.', $context);
        $this->messenger()
            ->addStatus($this->t('@type %info has been created.', $t_args));
    }
    else {
        $logger->notice('@type: updated %info.', $context);
        $this->messenger()
            ->addStatus($this->t('@type %info has been updated.', $t_args));
    }
    if ($block->id()) {
        $form_state->setValue('id', $block->id());
        $form_state->set('id', $block->id());
        if ($insert) {
            if (!($theme = $block->getTheme())) {
                $theme = $this->config('system.theme')
                    ->get('default');
            }
            $form_state->setRedirect('block.admin_add', [
                'plugin_id' => 'block_content:' . $block->uuid(),
                'theme' => $theme,
            ]);
        }
        else {
            $form_state->setRedirectUrl($block->toUrl('collection'));
        }
    }
    else {
        // In the unlikely case something went wrong on save, the block will be
        // rebuilt and block form redisplayed.
        $this->messenger()
            ->addError($this->t('The block could not be saved.'));
        $form_state->setRebuild();
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.