field_view_field() (Drupal, 8, Tematizare)

karl a intrebat.

Sunt nou în Drupal 8 și Twig și nu-mi pot da seama care este echivalentul lui field_view_field? Să spunem că am făcut acest lucru în Drupal 7 într-un fișier șablon:

print render(field_view_field('node', $node, 'body', array(
    'type' => 'text_summary_or_trimmed',
    'label' => 'hidden',
)));

Cum aș putea scoate un câmp personalizat în șablonul Drupal 8?

1 răspunsuri
4k4

Echivalentul php în drupal 8 este:

$build = $node->body->view('view_mode');
$output = Drupal::service('renderer')->renderRoot($build);

În twig nu trebuie să vă faceți singur randarea, twig face acest lucru pentru dvs. Deci, puteți pune pur și simplu prima linie într-o funcție de preprocesare:

function theme_preprocess_hook(&$variables) {
   $variables['body123'] = $node->body->view('view_mode');
}

și ieșiți în twig:

{{ body123 }}

Edit: Văd că folosiți un formator de câmpuri, nu un mod de vizualizare, și folosiți nodul preîncărcat, deci acesta este preprocesul pentru un șablon de nod:

function mytheme_preprocess_node(&$variables) {
       $variables['body123'] = $variables['node']->body->view(array('type' => 'text_summary_or_trimmed'));
}

Puneți acest lucru în mytheme.theme din directorul rădăcină al temei.

Mai multe informații sunt disponibile în înregistrare a modificărilor.

Comentarii

  • Bună, mulțumesc pentru rpely, primesc un mesaj ‘Fatal error: Call to a member function view() on null’ totuși când încerc să o folosesc din fișierul meu de temă –  > Por karl.
  • Am scăpat de acea eroare pe care o puneam în bartiksub_preprocess_page, dar acum nu mai primesc nimic înapoi –  > Por karl.
  • Există o mică eroare în codul de preprocesare (magic $node var). Dacă este ca în D7 ar trebui să găsești asta în $variables['node'] –  > Por Clive.
  • Trebuie să încărcați mai întâi $node. Dacă folosiți nodul care este preîncărcat, atunci puteți folosi $variables['node'] în preprocesare. –  > Por 4k4.
  • Bună, mulțumesc, nu înțeleg în totalitate, deci vrei să spui că trebuie să fac: theme_preprocess_hook($node, &$variables) ? –  > Por karl.