Wie komme ich in hook_node_presave an die node ID?
Eingetragen von rhodes (631)
am 05.04.2019 - 14:57 Uhr in
am 05.04.2019 - 14:57 Uhr in
Hallo zusammen,
in einer Drupal 8 Installation soll beim Erstellen eines Node ein Feld automatisch mit einem String befüllt werden. Ein Teil des String ist die Node id.
Leider gelingt es mir nicht in node_presave die Node ID zu ermitteln. Es wird ein leerer Wert zurückgeliefert.
function mymodule_node_presave(Drupal\node\NodeInterface $node) {
$mynid = "mynid = ".$node->id();
echo $mynid;
exit();
Ich habe mir mal über var_dump das Node-Objekt ausgeben lassen.
object(Drupal\node\Entity\Node)[1949]
public 'in_preview' => null
protected 'values' =>
array (size=24)
'nid' =>
array (size=1)
'x-default' =>
array (size=1)
...
'vid' =>
array (size=1)
'x-default' =>
array (size=0)
...
Bin gerade mit meinem Latein am Ende und freue mich über jeden Tipp.
Danke & Grüße
rhodes
- Anmelden oder Registrieren um Kommentare zu schreiben
in hook_ENTITY_TYPE_presave()
am 05.04.2019 - 16:29 Uhr
in hook_ENTITY_TYPE_presave() ist die Entity-ID bei der Erstellung einer Entity noch nicht vorhanden, was ja auch durchaus schlüssig ist. "Presave" heißt vor dem Speichern und vor dem Speichern einer neuen Entity ist noch keine ID vergeben, die Entity ist noch nicht in die Datenbank geschrieben.
Hier kann ggf. hook_ENTITY_TYPE_insert() helfen.
Vielen Dank, ich....
am 06.04.2019 - 09:03 Uhr
>>Hier kann ggf. hook_ENTITY_TYPE_insert() helfen.
..habe es schon mit hook_entity_insert versucht. Da bekomme ich tatsächlich die node ID. Allerdings kommt dieser Hook zu spät, da kann ich die Node-Daten nicht mehr ändern.
Soweit ich es sehe muss ich in hook_entity_insert die ID auslesen und dann nochmal auf den Node zugreifen, um das einzelne Feld zu ändern.