node_load((int) $nid)
Lädt eine vollständig ausgefüllte Knotenentität. $node->title->value
Ruft den Titel ab, aber wie greife ich in Drupal 8 auf Feldwerte zu?
63
Ich denke, Sie müssen nicht $entity
in ein Array konvertieren , dies würde einfach funktionieren.
$entity->get('field_name')->getValue();
Zu Ihrer Information: Wenn Sie kint()
vom devel_kint
Modul aus verwenden, werden Sie über alle verfügbaren Methoden informiert, die für den Zugriff auf die Objektelemente verwendet werden können. Dies var_dump()
ist vergleichsweise weniger hilfreich.
getValue()
funktioniert für mich (beide auf 8.1.x und 8.2.x) siehe api reference->getValue()
ist generisch und funktioniert unabhängig vom Feldtyp. Wenn Sie verwenden->value
, funktioniert dies nur, wenn der Feldwert in einervalue
Eigenschaft gespeichert ist . Bei komplexeren Typen (z. B. Datum oder Entitätsreferenz) funktioniert dies nicht.In Drupal 8 ist $ node ein Klassenknoten
oder
Gibt ein Array von Werten zurück.
Wenn Sie nur einen erwarten, können Sie das Array auch mit stringifizieren
oder
quelle
Für Felder sollten Sie
$node->body->value
beispielsweise verwenden können. Wenn Sie die Feldnamen nicht kennen, empfehle ich, das Devel- Modul für Drupal 8 zu installieren und den Knoten über like zu überprüfendsm($node)
.quelle
Sie können jederzeit
$entity->toArray()
sehen, was sich in einer Entität befindet. Selbst wenn Sie xdebug verwenden (zum Beispiel mit phpstorm), ist es sehr schwierig, ein Entity-Objekt für sich zu erfassen. Ich bezweifle, dassdsm($node)
Drupal 8 irgendeinen Sinn ergibt. Wenn Sie auf dem Debuggen in Ihrem Browser bestehen (sollten Sie aber nicht, Drupal 8 ist zu komplex, um ohne xdebug zu debuggen),dsm($node->toArray())
ist das genau das, was Sie wollen.quelle
Drupal\Core\Entity\EntityInterface
hattoArray
.Verwenden Sie den folgenden Codeausschnitt, um die Werte der Knotenfelder abzurufen
Dies wird verwendet, um die Node-ID von der URL abzurufen
Um Knotendaten mit nid zu laden
Dies wird verwendet, um den Feldwert abzurufen.
Dies wird verwendet, um den Knotentitel zu erhalten.
quelle
Für mich hat das mit einem
$entity
(einem Knoten) funktioniert:unter Verwendung von 8.1.
quelle
Während der Benutzung (auf die richtige Art und Weise):
quelle
Oder
Hier finden Sie nützliche Informationen zum Zugriff auf Werte aus dem Knotenobjekt https://www.frobiovox.com/posts/2016/03/28/simplify-drupal-8-field-value-calls.html
quelle
Es ist einfach:
Wenn das Feld ein Entitätsreferenzfeld ist, gibt es einige spezielle Möglichkeiten, um die referenzierten Entitäten abzurufen.
So erhalten Sie die Ziel-ID (erstes Element):
So rufen Sie die geladene Entität (erstes Element) ab:
Bei Verwendung
->entity
auf dem Feld wird die Entität automatisch geladen.Wenn das Feld mehrere Referenzen enthalten kann, können Sie alle wie folgt abrufen:
Das gibt Ihnen eine Reihe von Entitäten.
quelle