Điểm:1

How to get a rendered views field value programmatically?

lá cờ 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
lá cờ cn
*Đây không phải là "các trường của chế độ xem"* - `$view->field` chứa các trường bạn đã định cấu hình trong phần FIELDS của Chế độ xem. Mỗi trường là một plugin trình xử lý trường và nếu bạn muốn hiển thị một trường chính xác như trường được định cấu hình trong Chế độ xem thì hãy sử dụng phương thức plugin advancedRender($row).
liquidcms avatar
lá cờ us
Tôi đã thử advancedRender() (mặc dù không đưa nó vào danh sách của tôi ở trên); nhưng phải áp dụng cho điều sai. Điều này không làm việc. Cảm ơn bạn. Tôi đã thêm câu trả lời đầy đủ cho bài viết.
lá cờ cn
+1 upvote cho câu hỏi của bạn, @liquidcms, cảm ơn bạn. Bạn nên nhập câu trả lời ở trên giống như câu trả lời bên dưới, trong hộp nhập văn bản bên dưới "Câu trả lời của bạn" trên câu trả lời này rồi đánh dấu vào đó để đánh dấu câu trả lời đó là câu trả lời được chấp nhận. Tôi tìm thấy câu trả lời của bạn hữu ích. Một điều tôi muốn tìm thấy dễ dàng là tên máy của trường trong hàng chế độ xem - trong màn hình chỉnh sửa chế độ xem trong trang quản trị web, nó hiển thị tên "ví dụ: Nội dung: ID" chứ không phải tên máy ("nid" ). Cảm ơn một lần nữa.
liquidcms avatar
lá cờ us
Nếu bạn di chuột qua trường trong View UI, nó sẽ hiển thị cho bạn tên máy.
Điểm:0
lá cờ us

Từ câu trả lời của @ 4k4 ở trên:

foreach ($view->kết quả là $rid => $row) {
  $type[$row->nid] = $view->field['my_views_field']->advancedRender($row)->__toString();
}

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.