public function BlocksController::loadById in Gutenberg 8.2
Same name and namespace in other branches
- 8 src/Controller/BlocksController.php \Drupal\gutenberg\Controller\BlocksController::loadById()
 
Returns JSON representing the loaded blocks.
Parameters
string $plugin_id: Plugin ID.
Return value
\Symfony\Component\HttpFoundation\JsonResponse The JSON response.
1 string reference to 'BlocksController::loadById'
File
- src/
Controller/ BlocksController.php, line 109  
Class
- BlocksController
 - Returns responses for our blocks routes.
 
Namespace
Drupal\gutenberg\ControllerCode
public function loadById($plugin_id) {
  /* TODO: We can get a specific instance/derivative of block and load it's config */
  $config = [];
  $plugin_block = $this->blocksRenderer
    ->getBlockFromPluginId($plugin_id, $config);
  $content = '';
  if ($plugin_block) {
    $access_result = $this->blocksRenderer
      ->getBlockAccess($plugin_block);
    if ($access_result
      ->isForbidden()) {
      // You might need to add some cache tags/contexts.
      return new JsonResponse([
        'html' => $this
          ->t('Access to this block is denied.'),
      ]);
    }
    $content = $this->blocksRenderer
      ->getRenderFromBlockPlugin($plugin_block);
  }
  // If the block is a view with contexts defined, it may
  // not render on the editor because of, for example, the
  // node path. Let's just write some warning if no content.
  if ($content === '') {
    $content = $this
      ->t('Unable to render the content possibly due to path restrictions.');
  }
  return new JsonResponse([
    'html' => $content,
  ]);
}