2017-05-24 63 views
0

我有一個對象的變量,只從內部一個for x in y環路訪問時包含數據。嫩枝變量範圍 - 全球唯一可用的內部循環

這是一個字段模板內發生了Drupal的主題8,其目的是訪問同級字段的值。

簡單的代碼片段:

{% for x in [1] %} 
    Inside loop = {{ _parent.element['#object'].get('field_section_theme').value }} 
{% endfor %} 

Outside loop = {{ _parent.element['#object'].get('field_section_theme').value }} 

輸出:

Inside loop = normal 
Outside loop = 

我會理解的,如果這是變量的循環中設置是外面不可用,但是這是不相關的,取自模板本身的_context

我在一個簡單的一次性環路for循環中引用變量的解決方法解決了我的直接問題,但我很想知道這裏發生了什麼!

(我也寧願比for x in [1]方法更清潔的方式,但通常如果你只想要的東西執行一次,你只是寫出來!)

+0

不作任何一樣簡單感。你應該提供一些額外的代碼來這裏找出真正的問題 – DarkBee

+0

這是沒有意義的,所以這個問題:) 它是一個Drupal 8主題有關的領域模板 - 這個代碼訪問的兄弟字段中設置的值( 'field_section_theme')。 有沒有*代碼*上下文來提供那些線,隔離,複製的陌生感。(我在創建模板的一開始就遇到了這個問題。) – Jimaginary

+0

並非每個模板都提供了頁面可用的所有變量。這取決於您使用的是哪個模板,並且應該在模板頂部的註釋中顯示。 – garek007

回答

2

這是一個範圍錯誤,根據我的誤解如何並在_parent定義 - 我以爲它是由Drupal的,其中邏輯上是我目前的渲染領域的「父」是節點實體,又包含我想引用其他字段中提供。

然而_parent似乎是一根樹枝結構,與_parent循環指的是模板的主要範圍,而_parent循環是沒有意義的。

這是在事後很明顯,但由於我的代碼迴路和自我>母公司中開始生活>兄弟我是用有意義(在Drupal的上下文中)路我不明白爲什麼變量不可用在循環之外。

我不能_parent找到很多有用的文檔可言,因此任何鏈接,將不勝感激。


修復我的具體問題是從 「外循環」 的訪問路徑刪除_parent,即改變

Outside loop = {{ _parent.element['#object'].get('field_section_theme').value }}

Outside loop = {{ element['#object'].get('field_section_theme').value }}

+0

不錯的作品,很高興你明白了 – garek007

+0

一個要記住:) – DarkBee