Puncte:1

How to get a rendered views field value programmatically?

drapel us

Yes, I see there are many answers already posted here and elsewhere for this; but sadly they are all wrong. These answers include any of the following:

$view->style_plugin->getFieldValue($rid, 'field_myfield');

foreach ($view->result as $rid => $row) {
 foreach ($view->field as $fid => $field ) {
   $values[$rid][$fid . '-value'] = $field->getValue($row);
   $values[$rid][$fid . '-render'] = $field->render($row);
 }
}

$views->_entity->...

or a few others. These are all returning the field of the base entity returned by the view. These are entity field values. These are not the "fields of the view".

I know how to access these in a twig template (views-view-fields--[viewname]--[displayname].html.twig) but haven't been able to find out how to do this in a custom module.

Answer:

From @4k4's tip below:

This works:

foreach ($view->result as $rid => $row) {
  $type[$row->nid] = $view->field['my_views_field']->advancedRender($row)->__toString();
}
4uk4 avatar
drapel cn
*Aceste nu sunt „câmpurile vizualizării”* - `$view->field` conține câmpurile pe care le-ați configurat în secțiunea CÂMPURI a Vizualizării. Fiecare câmp este un plugin de gestionare a câmpului și dacă doriți să redați un câmp exact așa cum este configurat în View, atunci utilizați metoda plugin advancedRender($row).
liquidcms avatar
drapel us
Am încercat advancedRender() (chiar dacă nu l-am inclus în lista mea de mai sus); dar trebuie să se fi aplicat la lucru greșit. Acest lucru funcționează. Mulțumesc. Am adăugat răspunsul complet la postare.
drapel cn
+1 vot pozitiv la întrebarea ta, @liquidcms, mulțumesc. Ar trebui să introduceți răspunsul dvs. de mai sus ca răspuns de mai jos, în caseta de introducere a textului de sub „Răspunsul dvs.” la acest răspuns și apoi bifați-l pentru a-l marca ca răspuns acceptat. Am găsit util răspunsul tău. Un lucru pe care aș dori să-l găsesc cu ușurință este numele mașinii câmpului din rândul de vizualizări - în ecranul de editare a vizualizărilor din paginile de administrare web, acesta afișează numele „de exemplu Conținut: ID”, dar nu numele mașinii („nid” ). Multumesc din nou.
liquidcms avatar
drapel us
Dacă treceți cu mouse-ul peste câmpul din interfața de utilizare View, acesta vă va afișa numele mașinii.
Puncte:0
drapel us

Din răspunsul lui @4k4 de mai sus:

foreach ($view->rezultat ca $rid => $row) {
  $type[$row->nid] = $view->field['my_views_field']->advancedRender($row)->__toString();
}

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.