Bagaimana saya bisa mengatur anggota array yang sudah ada dari Twig?
Saya mencoba melakukannya dengan cara berikut:
{% set arr['element'] = 'value' %}
tapi saya mendapat kesalahan berikut:
"Tanda baca" tak terduga dari nilai "[" ("akhir blok pernyataan" diharapkan) di ...
.
dan[]
sangat mirip di Twig dan saya salah. Saya mencarinya dan mengedit jawaban saya.'element'
. Saya menemukan jawaban @ LivaX di bawah ini. Jadi itu akan terjadi{% set arr = arr|merge({(key): 'value'}) %}
.{{ UI.button({'type':'submit'}) }}
dan semua macro ini menggunakan | merge untuk mengatur params default, jadi ada kebutuhan logis untuk ini ...Saya mengalami masalah ini tetapi mencoba membuat indeks integer alih-alih indeks asosiatif seperti 'elemen'.
Anda perlu melindungi kunci indeks Anda dengan
()
menggunakan filter gabungan juga:Anda sekarang dapat menambahkan seperti kunci indeks kustom
('element'~loop.index0)
sumber
Jika inisialisasi hanya perlu:
sumber
Saya telah mencoba jawaban @LivaX tetapi tidak berhasil, menggabungkan sebuah array di mana kunci numerik tidak berfungsi ( https://github.com/twigphp/Twig/issues/789 ).
Itu hanya akan berfungsi ketika kunci adalah string
Apa yang saya lakukan adalah membuat ulang tabel lain (
temp
) dari tabel awal (t
) dan membuat kunci string, misalnya:t
kunci: 0, 1, 2 ..temp
kunci: 0_, 1_, 2_ ....sumber
Terima kasih atas utas ini - Saya juga dapat membuat array dengan (loop.index0) dan mengirim ke ranting.
sumber
Saya menemukan masalah ini sangat menjengkelkan, dan solusi saya mungkin ortodoks dan tidak sejalan dengan filosofi Twig, tetapi saya mengembangkan yang berikut:
yang bisa digunakan sebagai berikut:
{% set arr = set_element (arr, 'element', 'value')%}
sumber
Cukup gunakan ini seperti
{% set arr={'key':'value'} %}
(tanpa ruang kosong setelah:
), itu berfungsi dengan baik.Tetapi ketika saya menggunakannya di dalam for loop, untuk membuatnya menjadi array, itu tidak berfungsi di luar untuk lingkup.
sumber
Saya memiliki array multi dimensi. Satu-satunya solusi yang bisa saya temukan adalah membuat array sementara baru dan memperbarui / menambahkan informasi, yang selanjutnya diteruskan ke fungsi ranting lain.
sumber
Saya punya masalah ini beberapa waktu yang lalu. Bayangkan Anda memiliki array seperti ini:
Jadi, Anda ingin menampilkan data ini dalam dua baris, tetapi hapus kata sandi dari daftar itu. Untuk tujuan ini, membagi dalam 2 array akan mudah dengan
slice
filter. Namun, kami harus menghapus kata sandi. Karena alasan itu, saya menggunakan cuplikan ini. Idenya adalah untuk menempatkan semua elemen lebih kecil daridata
ukuran elemen dibagi dengan 2. Untuk menghitung ini kita menggunakan filterlength
. Sekarang untuk mendapatkan indeks dari elemen kita pengguna saat iniloop.index
. Dan akhirnya kita * mendorong elemen asosiatif di array kiri atau kanan. Array asosiatif memiliki dua komponenkey
danvalue
. Untuk referensi kunci array di twit kami operator()
dan kami menggunakanmerge
filter untuk mendorong ke array seperti yang ditunjukkan di sini{% set left_list = left_list|merge({ (key): value }) %}
Ini adalah solusi lengkap.
sumber
Anda juga dapat menggunakan sintaks berikut:
sumber