Fermer

mai 16, 2023

Apprenez à appeler des blocs personnalisés dans des contrôleurs dans Drupal 10

Apprenez à appeler des blocs personnalisés dans des contrôleurs dans Drupal 10


Je vous recommande de consulter les blogs suivants avant d’aller plus loin :

Guide étape par étape pour créer un contrôleur dans Drupal 8/9/10

Guide pas à pas pour créer un module personnalisé dans Drupal 9

Vous pouvez utiliser des contrôleurs pour générer des pages dynamiques et renvoyer du contenu en réponse aux demandes des utilisateurs. Parfois, vous devrez peut-être afficher le contenu d’un bloc personnalisé dans un contrôleur. Ceci peut être réalisé en suivant les étapes ci-dessous :

Tout d’abord, créez un bloc personnalisé à l’aide de l’API Block Plugin dans Drupal 10. Vous pouvez vous référer à la documentation officielle de Drupal pour un guide étape par étape sur la création d’un bloc personnalisé.

Une fois que vous avez créé le bloc personnalisé, vous pouvez le charger dans le contrôleur à l’aide du service Block Manager. Le service Block Manager est responsable du chargement et de la gestion des blocs dans Drupal. Vous pouvez injecter le service Block Manager dans le constructeur de votre contrôleur via l’injection de dépendances pour charger le bloc.

Ensuite, vous pouvez appeler la méthode « createInstance() » sur le service Block Manager pour créer une instance du bloc personnalisé par son ID de plug-in. Vous pouvez ensuite utiliser la méthode « build () » sur l’objet bloc pour obtenir le tableau de rendu du bloc. Enfin, vous pouvez renvoyer le tableau de rendu à partir de la méthode « content() » de votre contrôleur pour afficher le contenu du bloc sur la page de votre contrôleur.

Voici un exemple de chargement et de rendu d’un bloc personnalisé dans un contrôleur :

use Drupal\Core\Block\BlockManagerInterface;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;

class MyController extends ControllerBase implements ContainerFactoryPluginInterface {

/**
* The block manager service.
*
* @var \Drupal\Core\Block\BlockManagerInterface
*/
protected $blockManager;

/**
* MyController constructor.
*
* @param \Drupal\Core\Block\BlockManagerInterface $block_manager
* The block manager service.
*/
public function __construct(BlockManagerInterface $block_manager) {
$this->blockManager = $block_manager;
}

/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static(
$container->get('plugin.manager.block')
);
}

/**
* The controller content.
*
* @return array
* A render array containing the page content.
*/
public function content() {
// Load the custom block.
$block = $this->blockManager->createInstance('custom_block_plugin_id');

// Get the render array for the block.
$render_array = $block->build();

// Return the render array for the block.
return $render_array;
}

}

En suivant ces étapes, vous pouvez facilement charger et rendre un bloc personnalisé dans un contrôleur dans Drupal 10. Cela peut être utile pour afficher du contenu dynamique sur votre site Web et personnaliser l’expérience utilisateur.

TROUVÉ CELA UTILE ? PARTAGEZ-LE




Source link