class BlocksController in Gutenberg 8
Same name and namespace in other branches
- 8.2 src/Controller/BlocksController.php \Drupal\gutenberg\Controller\BlocksController
Returns responses for our blocks routes.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\gutenberg\Controller\BlocksController
Expanded class hierarchy of BlocksController
File
- src/
Controller/ BlocksController.php, line 16
Namespace
Drupal\gutenberg\ControllerView source
class BlocksController extends ControllerBase {
/**
* Drupal\Core\Block\BlockManagerInterface instance.
*
* @var \Drupal\Core\Block\BlockManagerInterface
*/
protected $blockManager;
/**
* Drupal\Core\Config\ConfigFactoryInterface instance.
*
* @var \Drupal\Core\Config\ConfigFactoryInterface
*/
protected $configFactory;
/**
* Drupal\gutenberg\BlocksRendererHelper instance.
*
* @var \Drupal\gutenberg\BlocksRendererHelper
*/
protected $blocksRenderer;
/**
* BlocksController constructor.
*
* @param \Drupal\Core\Block\BlockManagerInterface $block_manager
* Block manager service.
* @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
* Config factory service.
* @param \Drupal\gutenberg\BlocksRendererHelper $blocks_renderer
* Blocks renderer helper service.
*/
public function __construct(BlockManagerInterface $block_manager, ConfigFactoryInterface $config_factory, BlocksRendererHelper $blocks_renderer) {
$this->blockManager = $block_manager;
$this->configFactory = $config_factory;
$this->blocksRenderer = $blocks_renderer;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static($container
->get('plugin.manager.block'), $container
->get('config.factory'), $container
->get('gutenberg.blocks_renderer'));
}
/**
* Returns JSON representing the loaded blocks.
*
* @param \Symfony\Component\HttpFoundation\Request $request
* The request.
* @param string $content_type
* The content type to fetch settings from.
*
* @return \Symfony\Component\HttpFoundation\JsonResponse
* The JSON response.
*/
public function loadByType(Request $request, $content_type) {
$blockManager = \Drupal::service('plugin.manager.block');
$contextRepository = \Drupal::service('context.repository');
$config = \Drupal::service('config.factory')
->getEditable('gutenberg.settings');
$config_values = $config
->get($content_type . '_allowed_drupal_blocks');
// Get blocks definition.
$definitions = $blockManager
->getDefinitionsForContexts($contextRepository
->getAvailableContexts());
$definitions = $blockManager
->getSortedDefinitions($definitions);
$return = [];
foreach ($config_values as $key => $value) {
if ($value) {
$return[$key] = $definitions[$key];
}
}
return new JsonResponse($return);
}
/**
* Returns JSON representing the loaded blocks.
*
* @param string $plugin_id
* Plugin ID.
*
* @return \Symfony\Component\HttpFoundation\JsonResponse
* The JSON response.
*/
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 (!empty($plugin_block)) {
if ($this->blocksRenderer
->isAccessForbidden($plugin_block)) {
// You might need to add some cache tags/contexts.
return new JsonResponse([
'html' => $this
->t('No access.'),
]);
}
$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('Not able to render the content on editor possibly due to path restrictions.');
}
return new JsonResponse([
'html' => $content,
]);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
BlocksController:: |
protected | property | Drupal\Core\Block\BlockManagerInterface instance. | |
BlocksController:: |
protected | property | Drupal\gutenberg\BlocksRendererHelper instance. | |
BlocksController:: |
protected | property |
Drupal\Core\Config\ConfigFactoryInterface instance. Overrides ControllerBase:: |
|
BlocksController:: |
public static | function |
Instantiates a new instance of this class. Overrides ControllerBase:: |
|
BlocksController:: |
public | function | Returns JSON representing the loaded blocks. | |
BlocksController:: |
public | function | Returns JSON representing the loaded blocks. | |
BlocksController:: |
public | function | BlocksController constructor. | |
ControllerBase:: |
protected | property | The current user service. | 1 |
ControllerBase:: |
protected | property | The entity form builder. | |
ControllerBase:: |
protected | property | The entity manager. | |
ControllerBase:: |
protected | property | The entity type manager. | |
ControllerBase:: |
protected | property | The form builder. | 2 |
ControllerBase:: |
protected | property | The key-value storage. | 1 |
ControllerBase:: |
protected | property | The language manager. | 1 |
ControllerBase:: |
protected | property | The module handler. | 2 |
ControllerBase:: |
protected | property | The state service. | |
ControllerBase:: |
protected | function | Returns the requested cache bin. | |
ControllerBase:: |
protected | function | Retrieves a configuration object. | |
ControllerBase:: |
private | function | Returns the service container. | |
ControllerBase:: |
protected | function | Returns the current user. | 1 |
ControllerBase:: |
protected | function | Retrieves the entity form builder. | |
ControllerBase:: |
protected | function | Retrieves the entity manager service. | |
ControllerBase:: |
protected | function | Retrieves the entity type manager. | |
ControllerBase:: |
protected | function | Returns the form builder service. | 2 |
ControllerBase:: |
protected | function | Returns a key/value storage collection. | 1 |
ControllerBase:: |
protected | function | Returns the language manager service. | 1 |
ControllerBase:: |
protected | function | Returns the module handler. | 2 |
ControllerBase:: |
protected | function |
Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait:: |
|
ControllerBase:: |
protected | function | Returns the state storage service. | |
LinkGeneratorTrait:: |
protected | property | The link generator. | 1 |
LinkGeneratorTrait:: |
protected | function | Returns the link generator. | |
LinkGeneratorTrait:: |
protected | function | Renders a link to a route given a route name and its parameters. | |
LinkGeneratorTrait:: |
public | function | Sets the link generator service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
UrlGeneratorTrait:: |
protected | property | The url generator. | |
UrlGeneratorTrait:: |
protected | function | Returns the URL generator service. | |
UrlGeneratorTrait:: |
public | function | Sets the URL generator service. | |
UrlGeneratorTrait:: |
protected | function | Generates a URL or path for a specific route based on the given parameters. |