जवाबों:
ट्विग में ऐसा करने का कोई अच्छा तरीका नहीं है। हालांकि, यह मर्ज फिल्टर का उपयोग करके संभव है:
{% set arr = arr|merge({'element': 'value'}) %}
.
और []
ट्विग में बहुत समान हैं और मैं गलत था। मैंने इसे देखा और अपना उत्तर संपादित किया।
'element'
। मुझे नीचे @ LivaX का उत्तर मिला। तो, यह होगा {% set arr = arr|merge({(key): 'value'}) %}
।
{{ UI.button({'type':'submit'}) }}
और इन सभी मैक्रो का उपयोग करें। डिफ़ॉल्ट
मैं इस समस्या में भाग गया, लेकिन 'एलीमेंट' जैसे साहचर्य सूचकांक के बजाय पूर्णांक इंडेक्स बनाने की कोशिश कर रहा था।
आपको ()
मर्ज फ़िल्टर का उपयोग करने के साथ अपनी इंडेक्स कुंजी को सुरक्षित रखने की आवश्यकता है :
{% set arr = arr|merge({ (loop.index0): 'value'}) %}
अब आप कस्टम इंडेक्स की जैसे जोड़ सकते हैं ('element'~loop.index0)
मैंने @LivaX का उत्तर देने की कोशिश की है, लेकिन यह काम नहीं करता है, एक सरणी को मर्ज करना जहाँ कुंजियाँ संख्यात्मक अभ्यस्त कार्य हैं ( https://github.com/twigphp/Twig/issues/789 )।
यह तभी काम करेगा, जब चाबियाँ स्ट्रिंग्स होंगी
मैंने जो किया वह temp
प्रारंभिक तालिका से एक और तालिका ( ) को फिर से बनाया है और t
कुंजी को एक स्ट्रिंग बनाएं, उदाहरण के लिए:
{% for key , value in t%}
{% set temp= temp|merge({(key~'_'):value}) %}
{% endfor %}
t
कुंजियाँ: 0, 1, 2 ।।
temp
कुंजियाँ: 0_, 1_, 2_ ...।
{% set links = {} %}
{# Use our array to wrap up our links. #}
{% for item in items %}
{% set links = links|merge({ (loop.index0) : {'url': item.content['#url'].getUri(), 'text': item.content['#title']} }) %}
{% endfor %}
{%
set linkList = {
'title': label,
'links': links
}
%}
{% include '<to twig file>/link-list.twig'%}
इस धागे के लिए धन्यवाद - मैं भी (loop.index0) के साथ एक सरणी बनाने और टहनी भेजने में सक्षम था।
मैंने इस मुद्दे को बहुत कष्टप्रद पाया है, और मेरा समाधान शायद रूढ़िवादी है और ट्विग दर्शन के साथ इनलाइन नहीं है, लेकिन मैंने इसे विकसित किया है:
$function = new Twig_Function('set_element', function ($data, $key, $value) {
// Assign value to $data[$key]
if (!is_array($data)) {
return $data;
}
$data[$key] = $value;
return $data;
});
$twig->addFunction($function);
जिसका उपयोग निम्नानुसार किया जा सकता है:
{% set arrest = set_element (गिरफ्तारी, 'तत्व', 'मूल्य')%}
बस इस तरह का उपयोग करें {% set arr={'key':'value'} %}
(के बाद कोई रिक्त स्थान नहीं है :
), यह अच्छी तरह से काम करता है।
लेकिन जब मैं इसे लूप के लिए उपयोग करता हूं, तो इसे एक सरणी बनाने के लिए, यह कार्यक्षेत्र के बाहर काम नहीं करता है।
{% for group in user.groups %}
{% set foo={'loop.index0':'group.id'} %}
{% set title={'loop.index0':'group.title'} %}
{{ title }} //it work
{% else %}
{% set foo={'0':'-1'} %}
{% set title={'0':'未分组'} %}
{% endfor %}
{{ title }} //it does not work, saying title is not defined
मुझे कुछ समय पहले यह समस्या थी। कल्पना कीजिए कि आपके पास इस तरह की एक सरणी है:
data = {
'user': 'admin',
'password': 'admin1234',
'role': 'admin',
'group': 'root',
'profile': 'admin',
'control': 'all',
'level': 1,
'session': '#DFSFASADASD02',
'pre_oa': 'PRE-OA',
'hepa_oa': 'HEPA-OA',
'pre_ra': 'HEPA-RA',
'hepa_ra': 'HEPA-RA',
'deodor_ra': 'DEODOR-RA'
}
इसलिए, आप इस डेटा को दो पंक्तियों में दिखाना चाहते हैं, लेकिन उस सूची से पासवर्ड हटा दें। इसके लिए, slice
फ़िल्टर के साथ 2 सरणियों में विभाजन आसान होगा । हालाँकि, हमें पासवर्ड निकालना होगा। उस कारण से, मैं इस स्निपेट का उपयोग कर रहा हूं। विचार सभी तत्वों data
को 2 से विभाजित तत्वों के आकार से कम रखना है। इसकी गणना करने के लिए हम फिल्टर का उपयोग करते हैं length
। अब वर्तमान तत्व का सूचकांक प्राप्त करने के लिए हम उपयोगकर्ता loop.index
। और अंत में हम बाएं या दाएं सरणी में एक सहयोगी तत्व को धक्का देते हैं। एक सहयोगी सरणी में दो घटक होते हैं key
और value
। हम ऑपरेटर से जुड़वा में एक सरणी कुंजी को संदर्भित करने के लिए ()
और हम merge
यहां दिखाए गए अनुसार फ़िल्टर को सरणी में धकेलने के लिए उपयोग करते हैं{% set left_list = left_list|merge({ (key): value }) %}
यह पूरा उपाय है।
{% set left_list = {} %}
{% set right_list = {} %}
{% set limit = data|length // 2 %}
{% for key, value in data|cast_to_array %}
{% if key != 'password' %}
{% if loop.index <= limit %}
{% set left_list = left_list|merge({ (key): value }) %}
{% else %}
{% set right_list = right_list|merge({ (key): value }) %}
{% endif %}
{% endif %}
{% endfor %}
{% for key, value in left_list %}
<p>
<label for="{{key}}">{{key}}</label>
<input type="text" name="{{key}}" id="{{key}}" value="{{value}}"
class="text ui-widget-content ui-corner-all">
</p>
{% endfor %}