Làm cách nào để nhận từng giá trị trường trong lượt xem-lượt xem-không được định dạng - view-machine-name.html.twig?


19

Tôi có một tệp twig: view-view-unformatted - view-machine-name.html.twig

{#
/**
 * @file
 * Default theme implementation to display a view of unformatted rows.
 *
 * Available variables:
 * - title: The title of this group of rows. May be empty.
 * - rows: A list of the view's row items.
 *   - attributes: The row's HTML attributes.
 *   - content: The row's content.
 * - view: The view object.
 * - default_row_class: A flag indicating whether default classes should be
 *   used on rows.
 *
 * @see template_preprocess_views_view_unformatted()
 *
 * @ingroup themeable
 */
#}
{% if title %}
  <h3>{{ title }}</h3>
{% endif %}
{% for row in rows %}
  {%
    set row_classes = [
      default_row_class ? 'views-row',
    ]
  %}
  <div{{ row.attributes.addClass(row_classes) }}>
    {{ row.content }}
  </div>
{% endfor %}

Tôi muốn có Titlebody trường nằm trong 1 dòng được phân tách bằng dấu phẩy như:

tiêu đề, cơ thể

Làm cách nào tôi có thể nhận được giá trị của 'title' hoặc 'body' hoặc bất kỳ trường nào khác trong chế độ xem này trong khi gỡ lỗi?

Tôi đã sử dụng kint (tiêu đề) và kint (cơ thể) nhưng nó không hoạt động. Tôi cũng làm debug = TRUE;trong tập tin dịch vụ.

Nhưng không thể tìm ra cách có giá trị trường trong twig html chưa được định dạng.

Câu trả lời:


20

Như bạn có thể thấy trong view-view-unformatted.html.twig , nó cho biết mã nhận xét mà bạn đã hiển thị nói gì, không có biến trường. Do đó, mẫu này không được sử dụng cho các trường.

Các biến có sẵn:

  • title: Tiêu đề của nhóm hàng này. Có thể trống rỗng.
  • hàng: Một danh sách các mục hàng của khung nhìn.
    • thuộc tính: Thuộc tính HTML của hàng.
    • nội dung: Nội dung của hàng.
  • view: Đối tượng view.
  • default_row_group: Một cờ cho biết các lớp mặc định có nên được sử dụng trên các hàng hay không.

Nếu bạn muốn sử dụng các trường trong một mẫu xem, hãy sử dụng các khung nhìn-view-view - [view-name] - [tên máy] .html.twig . Ở đó, bạn có thể in các lĩnh vực của bạn như thế này:

<span>{{ fields.title.content }},</span><span>{{ fields.body.content }}</span>

view_name với dấu gạch dưới được giữ, trong khi tên máy có dấu gạch dưới được chuyển thành dấu phẩy
Matoeil

1
view-view-Field.html.twig có thể được sao chép từ thư mục / core / module / view / samples rồi đổi tên như trên. Đối với Chế độ xem đã cho với tên máy của foobar, thì tên mới có thể là chế độ xem-trường-khung nhìn - foobar.html.twig. Thông tin thêm về các quy ước đặt tên có sẵn ở đây: drupal.org/docs/8/theming/twig/twig-template-naming-conventions
bkudrle

13

Tôi đã tìm thấy Cách sử dụng Kint, Bạn có thể nhận các giá trị trường trong chế độ xem - unformatted.html.twig

nếu bạn muốn một lĩnh vực cụ thể

Để có được giá trị trường văn bản

{{row.content['#row']._entity.field machine name[0].value}}

Để có được các trường hình ảnh src

{{file_url(row.content['#row']._entity.field machine name.entity.uri.value)}}

Để có được hình ảnh alt, tiêu đề, chiều rộng, chiều cao

{{row.content['#row']._entity.field machine name[0].alt/title/width/height}}

Lưu ý: thay thế tên máy trường bằng tên máy của trường

Nếu bạn muốn lặp qua nhiều lĩnh vực

{% for i in range(0, 10) %}
  {{ row.content['#row']._entity.body[i].value }}
{% endfor %}

Nếu bạn muốn giá trị thô

{% for i in range(0, 10) %}
  {{ row.content['#row']._entity.body[i].value|raw }}
{% endfor %}

7

Tôi đã tìm ra một cách sử dụng kint.

Bên trong view-view-unformatted.html.twig sử dụng mã sau đây để hiển thị các trường riêng lẻ của bạn:

{% for row in rows %}

{{ row.content['#view'].style_plugin.render_tokens[ loop.index0 ]['{{ YOUR_FIELD_NAME }}'] }}

{% endfor %}

Cách sử dụng Trường hình ảnh. Khi tôi sử dụng field_image, không có đầu ra. URL hình ảnh không hiển thị hoặc kết xuất!
Harish ST

4

Dưới đây là mã mẫu để truy cập các giá trị trường trong tệp view-view-unformatted.html.twig -

{% for row in rows %}
  {% set photo = file_url(row['content']['#row']._entity.field_page_photo.entity.fileuri) %}          
  <li><img src={{ photo }} class="img-responsive img-circle"></li>
{% endfor %}

Hoàn hảo! Đó là điều tôi muốn biết, Cảm ơn Renuka.
Niladri Banerjee - Uttarpara

2

Bạn cần tạo ba tệp để ghi đè các chế độ xem bằng các tệp twig.
1. lượt xem-lượt xem - foobar.html.twig
2. lượt xem-lượt xem-không được định dạng - foobar.html.twig
3. lượt xem-lượt xem trường - foobar.html.twig

Mục đích của cả ba tệp được mô tả bên dưới:
1: Triển khai chủ đề mặc định cho mẫu xem chính.
2: Thực hiện chủ đề mặc định để hiển thị chế độ xem các hàng không được định dạng.
3: Mẫu xem mặc định để hiển thị tất cả các trường trong một hàng.

Bạn nên sử dụng "view-view-field - foobar.html.twig" để xuất từng trường của bạn trên các khung nhìn.

Dưới đây là một mẫu:

<li>
<p>{{ fields.title.content }}</p> // Title field
<p>{{ fields.body.content }}</p> // Body field
<span>{{ fields.created.content }}</span> // Node authored date field
<a href="{{ fields.path.content }}" class="readmore"> read more </a> // Link to actual page
</li>

Xin chào, tôi đã thử ở trên trong view-view-foobar.html.twig nhưng không thể in một trường duy nhất. Tôi gỡ lỗi các trường bằng cách sử dụng kint () nó hiển thị mảng 'nothing' trên đầu trang.
Shakil Ahmad

0

Từ kinh nghiệm của tôi, không có cách nào dễ dàng để twig trong lượt xem-lượt xem-không được định dạng - view-.html.twig một giá trị từ các trường không phải là một phần của cấu trúc thực thể.

Rất để in một text (plain)lĩnh vực. Vì vậy, đau đớn để in một flag_field, entity_referencevà như vậy.

Phải đạt được điều này mà không cần thông qua toàn bộ mã lõi xem, tôi đã phải xây dựng bản hack này:

  1. thêm một thực thể trường văn bản thuần
  2. móc giá trị trường xem trong một mô-đun tùy chỉnh:
  3. twig (cuối cùng) giá trị mong muốn trong mẫu

Thêm chi tiết tại đây /drupal//a/288316/13760

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.