web-dev-qa-db-fra.com

Comment obtenir le nid d'un nœud nouvellement créé?

Si j'ai créé un nœud dans un hook d'installation, comment puis-je obtenir immédiatement une référence à la propriété nid? Il ne semble pas être défini sur l'entité lors de la sauvegarde.

use Drupal\node\Entity\Node;

function my_frontpage_install() {
    $node = Node::create(array(
        'type' => 'page',
        'title' => t('Welcome'),
        'body' => array(array(
            'value' => 'Hi there'
        )),
    ));

    $node->save();

    $siteConfig = \Drupal::service('config.factory')->getEditable('system.site');
    $pageConfig = $siteConfig->get('page');
    $pageConfig['front'] = 'node/' . $node->getId(); // this returns null
    $siteConfig->set('page', $pageConfig);
    $siteConfig->save();
}

J'ai essayé des variations sur le thème de getId, getNid(), get('nid'), getOriginalId(), mais si je vide l'objet de nœud après l'enregistrement , la propriété nid n'est clairement pas définie.

6
shanethehat

La bonne chose à propos de Drupal 8, c'est qu'il est orienté objet, avec des interfaces, des classes abstraites, etc.

Cela signifie que toutes les entités partagent un grand nombre de méthodes. Pour obtenir l'id d'un noeud, utilisez la méthode id

$nid = $node->id();

Cela fonctionne également pour les utilisateurs, les termes de taxonomie et toutes les autres entités que vous créez vous-même ou que vous obtenez à partir des modules des modules contrib.

Pour Drupal 8 développement, utiliser un IDE devient vraiment puissant car il peut vous aider avec les méthodes disponibles, différentes instances de classes).

7
googletorp