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.