Quelqu'un pourrait-il me dire comment accéder par programme au contenu du champ d'un bloc personnalisé?
Jusqu'à présent, j'ai réussi:
use Drupal\block\Entity\Block;
$block = Block::load($block_name);
if ($block) {
$render = \Drupal::entityTypeManager()
->getViewBuilder('block')
->view($block);
}
Cependant, cela ne me donne pas accès aux champs et à leurs données.
Votre code charge un bloc configuré, pas le contenu d'un bloc personnalisé.
Cela chargera les données de champ du contenu du bloc:
$custom_block = \Drupal::entityTypeManager()->getStorage('block_content')->load('1');
$fieldcontent = $custom_block->field_myfield->value;
Je voulais juste expliquer l'exemple de code donné dans l'autre réponse avec plus de détails, ce qui fera gagner du temps à de nombreux utilisateurs.
$custom_block = \Drupal::entityTypeManager()->getStorage('block_content')->load('1');
$fieldcontent = $custom_block->field_myfield->value;
load('1')
est la valeur d'ID de cette tableSi vous souhaitez modifier les données du champ block_content__body.body_value dans votre bloc, utilisez simplement ce code.
$custom_block->body->value = 'TEST';