Come è possibile eseguire il rendering dei campi da un riferimento di entità nei modelli di nodo? [Drupal 8]


9

Per il contesto, ho a che fare con due tipi di contenuto: article e team_profile. Nei nodi dell'articolo, abbiamo un campo di riferimento dell'entità che inserisce un nodo team_profile per fungere da informazioni sull'autore.

Vorrei solo rendere l'entità con una nuova modalità di visualizzazione, ma il nostro design ha la foto impostata direttamente sopra la data e il nome pubblicati, uno accanto all'altro: screenshot del disegno informativo dell'autore

In D7 vorrei dpm($content)analizzare in dettaglio le informazioni sul nodo, fare doppio clic ed estrarre il resto del percorso di riferimento. Sto usando Kint e sono in grado di sputare i contenuti di riferimento dell'entità a un certo livello {{ kint(content.field_blog_author[0]['#node']) }}. Il livello successivo a cui voglio accedere è values, ma provare quanto segue mi dà NULL:

  • content.field_blog_author[0]['#node’][‘values’]
  • content.field_blog_author[0]['#node’]=>values
  • content.field_blog_author[0]['#node’]->values

Alla fine mi piacerebbe rendere i campi titlee field_team_imagedal nodo referenziato ( visto qui nell'output di kint ). Non ho trovato informazioni su questo è la documentazione o cercando. Qualcuno mi aiuterebbe a rimanere libero?

Risposte:


13

#node c'è effettivamente il nodo corrente.

Se si desidera accedere ai campi e ai loro valori, iniziare con il nodo, non con il contenuto, che è un array di rendering con i campi configurati.

È possibile accedere all'entità di riferimento in questo modo {{ node.field_blog_author.entity }}.

Da lì, è possibile continuare di nuovo nel campo dell'entità referenziata che si desidera visualizzare. Potresti provare a chiamare il metodo view, con lo visualizzerai con le impostazioni predefinite, puoi anche passare una modalità di visualizzazione come stringa o impostazioni di visualizzazione di un array (non sei sicuro dell'esatta sintassi per quella in ramoscello).

Inoltre, il mio riferimento standard, vedere http://wizzlern.nl/drupal/drupal-8-entity-cheat-sheet per una fantastica panoramica delle entità di contenuto, come sono strutturate e come accedere ai valori. Gran parte di ciò vale anche per il ramoscello.

E infine, quando cerchi di capire cosa c'è in un'entità di contenuto, usa node.toArray (), che ti dà una rappresentazione di array molto vicina a come puoi accedervi come oggetto. Mentre la struttura interna è abbastanza diversa.


Grazie Berdir. {{ kint(node.field_blog_author.entity) }}genera un buon array del nodo di riferimento, ma ora non posso approfondire. {{ kint(node.field_blog_author.entity.title) }}, ad esempio, interrompe la pagina, non carica risorse o altro oltre l'area dell'intestazione. Lo stesso per nido altri. Solo per risatine, cercando di includere l'entità a cui si fa riferimento nel contenuto del nodo con un messaggio di errore che{{ node.field_blog_author.entity }} restituiva apparentemente dicendo che il nodo non poteva essere mostrato nel modello in quel modo.
alexbea,

Sembra che questi potrebbero essere valori protetti . Suona bene? Forse devo creare una modalità di visualizzazione solo per la foto, quindi utilizzare la modalità di visualizzazione "etichetta" per il nome.
alexbea,

Sì, sono protetti. Come ho detto, usa toArray (), che funziona anche su node.field_blog_author.entity.title è un oggetto campo, se vuoi valutare, hai bisogno di ... entity.title.value. Assicurati di leggere il cheat sheet di riferimento, spiega molte di queste cose.
Berdir,

1
Apprezzo l'aiuto. Non capisco davvero come usare le informazioni nel cheat sheet, comunque. L'aggiunta .valueha funzionato in questo caso e risponde alla mia domanda originale.
alexbea,

@berdir l'URL del sito è rotto.
chalo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.