Jak mogę ustawić składową już istniejącej tablicy z Twig?
Spróbowałem zrobić to w inny sposób:
{% set arr['element'] = 'value' %}
ale otrzymałem następujący błąd:
Nieoczekiwany token „interpunkcja” wartości „[” (oczekiwano „końca bloku instrukcji”) w ...
.
i[]
są bardzo podobne w Twig i myliłem się. Sprawdziłem to i zredagowałem odpowiedź.'element'
. Znalazłem odpowiedź @ LivaX poniżej. Tak więc byłoby{% set arr = arr|merge({(key): 'value'}) %}
.{{ UI.button({'type':'submit'}) }}
i wszystkie te makra używają | merge do ustawiania domyślnych parametrów, więc istnieje logiczna potrzeba ...Napotkałem ten problem, ale próbowałem utworzyć indeksy całkowite zamiast indeksu asocjacyjnego, takiego jak „element”.
Musisz również chronić swój klucz indeksu za
()
pomocą filtru scalającego:Możesz teraz dodać niestandardowy klucz indeksu, taki jak
('element'~loop.index0)
źródło
Jeśli potrzebujesz tylko inicjalizacji:
źródło
Próbowałem odpowiedzi @LivaX, ale nie działa, łączenie tablicy, w której klucze są numeryczne, nie zadziała ( https://github.com/twigphp/Twig/issues/789 ).
To zadziała tylko wtedy, gdy klucze są łańcuchami
To, co zrobiłem, to odtworzenie innej tabeli (
temp
) z początkowej tabeli (t
) i uczynienie kluczy ciągiem, na przykład:t
klawisze: 0, 1, 2 ..temp
klucze: 0_, 1_, 2_ ....źródło
Dzięki za ten wątek - udało mi się również stworzyć tablicę z (loop.index0) i wysłać do twig.
źródło
Uważam, że ten problem jest bardzo irytujący, a moje rozwiązanie jest być może ortodoksyjne i nie jest zgodne z filozofią Twig, ale opracowałem następujące elementy:
które można wykorzystać w następujący sposób:
{% set arr = set_element (arr, 'element', 'wartość')%}
źródło
Po prostu użyj tego w ten sposób
{% set arr={'key':'value'} %}
(bez spacji po:
), działa dobrze.Ale kiedy używam go wewnątrz pętli for, aby uczynić go tablicą, nie działa poza zakresem for.
źródło
Miałem tablicę wielowymiarową. Jedynym rozwiązaniem, jakie mogłem znaleźć, jest utworzenie nowej tymczasowej tablicy i zaktualizowanie / dodanie informacji, które zostały następnie przekazane do innej funkcji gałązki.
źródło
Miałem ten problem kiedyś temu. Wyobraź sobie, że masz tablicę taką jak ta:
Więc chcesz pokazać te dane w dwóch wierszach, ale usuń hasło z tej listy. W tym celu podzielenie na 2 tablice będzie łatwe dzięki
slice
filtrowi. Musimy jednak usunąć hasło. Z tego powodu używam tego fragmentu. Chodzi o to, aby wszystkie elementy były mniejsze niżdata
rozmiar elementów podzielony przez 2. Aby to obliczyć, używamy filtralength
. Teraz, aby uzyskać indeks bieżącego elementu, którego używamyloop.index
. I na koniec * wypychamy element asocjacyjny w lewej lub prawej tablicy. Tablica asocjacyjna ma dwa komponentykey
ivalue
. Aby odwołać się do klucza tablicy w twit, używamy operatora()
i używamymerge
filtru, aby wepchnąć go do tablicy, jak pokazano tutaj{% set left_list = left_list|merge({ (key): value }) %}
To jest kompletne rozwiązanie.
źródło
Możesz również użyć następującej składni:
źródło