After adding a block file to src/Plugin/Block I can’t add the block on the Block Layout admin page. When I filter by block name I can see it, but then when I try to place it I can’t get to the configure block screen (pressing the ‘Place block’ button produces no effect). I do not get any errors.
What could be the reason for such a behaviour?
The block file contents:
<?php namespace DrupalCoreBlockBlockBase; use DrupalCoreLink; use DrupalCorePluginContainerFactoryPluginInterface; use DrupalCoreSessionAccountInterface; use DrupalcoreUrl; use SymfonyComponentDependencyInjectionContainerInterface; /** * Provides a block with a link to start the toru. * * @Block( * id = "iai_tour_link", * admin_label = @Translation("Link for the IAI Product Guide tour"), * category = @Translation("Links"), * context = { * "node" = @ContextDefinition( * "entity:node", * label = @Translation("Current Node") * ) * } * ) */ class TourLinkBlock extends BlockBase implements ContainerFactoryPluginInterface{ /** * The current user. * * @var DrupalCoreSessionAccountInterface; * */ protected $currentUser; /** * Constructs an TourLinkBlock object. * * @param array $configuration * A configuration array containing information about the plugin instance. * @param string $plugin_id * The plugin_id for the plugin instance. * @param mixed $plugin_definition * The plugin implementation definition. */ public function __construct(array $configuration, $plugin_id, $plugin_definition, AccountInterface $current_user){ parent::__construct($configuration, $plugin_id, $plugin_definition); $this->currentUser = $current_user; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition){ return new static( $configuration, $plugin_id, $plugin_definition, $container->get('current_user') ); } public function build(){ $node = $this->getContextValue('node'); if ($this->currentUser->hasPermission('access tour') && $node->getType() == 'book'){ $url = Url::fromRoute('<current>', array(), array('query' => array('tour' => 1))); $build['tour_link']= [ '#type' => 'markup', '#markup' => Link::fromTextAndUrl(t('Take the tour!'), $url)->toString(), ]; $build['#attached']['library'][] = 'tour/tour'; return $build; } } }