2016-06-01 73 views
1

爲前4個項目設置Drupal 8自定義視圖,我希望項目1的佈局不同於其餘佈局。我爲自定義視圖覆蓋了文件,但對於此示例,我使用基本文件保持簡單。在樹枝節點模板中使用計數器

在意見-view.html.twig基本文件,我們有:

<div class="view-content"> 
    {{ rows }} 
</div> 

在node.html.twig基本文件,我們有:

<div {{ content_attributes.addClass('content') }}> 
    {{ content }} 
</div> 

在node.html.twig我針對這樣的事情:

{% if row_counter = 1 %} 
    output this markup/fields 
{% else %} 
    do something boring with the other 3 items. 
{% endif %} 

我能夠設置row_counter的意見,view.twig.html文件:

{% for row in rows %} 
    {% set row_counter = loop.index %} 
    <div{{ row.attributes }}> 
     {{ row_counter }} 
    </div> 
{% endfor %} 

但我需要覈對的{{row_counter}}在node.html.twig文件中的值....

哪些性能是node.html.twig對證可用它在列表中的位置?

回答

2

documentation

循環變量

Inside of a for loop block you can access some special variables: 
Variable  Description 
----------------------------------------------------------------- 
loop.index  The current iteration of the loop. (1 indexed) 
loop.index0  The current iteration of the loop. (0 indexed) 
loop.revindex The number of iterations from the end of the loop (1 indexed) 
loop.revindex0 The number of iterations from the end of the loop (0 indexed) 
loop.first  True if first iteration 
loop.last  True if last iteration 
loop.length  The number of items in the sequence 
loop.parent  The parent context 

編輯:父模板中的每個變量所知道的是也被稱爲一個include內的背景是,默認情況下通過。只有宏觀的不知道父母的背景下

控制器

<?php 
    require __DIR__ . '/../requires/propel_standalone.php'; 

    echo $twig->render('tests/items.html', [ 
     'items' => [ 
         'Abc', 
         'def', 
         'ghi', 
         'jkl', 
         'mno', 
         'pqr', 
         'stu', 
         'vwx', 
         'z', 
        ], 
    ]); 

items.twig

<!doctype> 
<html> 
    <head><title>Test</title></head> 
    <body> 
     {% for item in items %} 
      {% include "tests/item.html" %} 
     {% endfor %} 
    </body> 
</html> 

item.twig

{% set order = 'Nothing to report' %} 
{% if loop.first %} 
    {% set order = 'I\'m first' %} 
{% endif %} 
{% if loop.last %} 
    {% set order = 'I\'m last' %} 
{% endif %} 

{% if loop.index is even %} 
    {% set order = 'I\'m even' %} 
{% endif %} 

{% if loop.index is divisible by(5) %} 
    {% set order = 'I can be dived by 5' %} 
{% endif %} 

{% if loop.index is divisible by(3) %} 
    {% set order = 'I can be dived by 3' %} 
{% endif %} 


<div> 
    <b>{{ loop.index }}:</b>{{ order }} - {{ item }} 
</div> 
+0

是的,我可以在for循環中訪問那些行。 但我需要基於子模板中的loop.index值的邏輯。 –

+0

我不確定..''variable'也可以在包含的'node.twig.html'中找到。你在尋找什麼樣的邏輯? – DarkBee

+0

是的邏輯是上面的代碼塊3,我想爲項目1編寫不同的標記/字段,併爲項目2-4做一些不太奢侈的事情。我在view.html.twig中設置了row_count; row_count在node.html.twig中沒有值。我在node.html.twig中找不到任何東西給我一個計數器。 –

0

你可以做這樣的事情,如果一類是不夠的:

您的意見模板:

{% for row in rows %} 
    <div class="{% if loop.index == 1 %}first_element{% endif %}"> 
     {{ row.content }} 
    </div> 
{% endfor %} 

然後就是它的樣式適當。