में है, मैं smarty के साथ php का उपयोग कर रहा हूँ। php में मैं दो सरणियों है: - और होगा -Smarty: जांच करें कि चर सरणी
$code = Array
(
[n_id] => 1
[t_code] => ABC123
[t_description] => Test code
[b_enabled] => Yes
[n_type] => 3
[dt_start] =>
[dt_end] =>
[n_min_req_gbp] => 0
[n_min_req_usd] => 0
[n_amount_gbp] =>
[n_amount_usd] =>
[n_max_overall_gbp] =>
[n_max_overall_usd] =>
[n_extra] => 6
[b_reuse] => No
[n_applications] => Array
(
[0] => 2
)
)
और
$all_application = Array
(
[1] => New registration
[2] => Mid-subscription upgrade
[3] => Subscription renewal
[4] => Additional purchase
)
ध्यान दें कि दूसरी सरणी हो सकता है बड़े होते हैं, इस संदर्भ डेटा, पहली सरणी में n_applications
सरणी क्षेत्र है जहाँ से है बनाया। यही है, n_applications
में सरणी $all_applications
सरणी से कुंजी का सबसेट होगा।
अब, मैं टेम्पलेट में इन दो सरणियों बताए हूँ:
$template->assign('code', $code);
$template->assign('apps', $all_applications);
और टेम्पलेट में, मैं $code
सरणी में फ़ील्ड का संपादन के लिए एक रूप बना रहा हूं। 'एप्लिकेशन' चयन को छोड़कर सब कुछ ठीक काम कर रहा है। मैं उन ऐप्स को पूर्व-चयन करना चाहता हूं जो पहले से ही n_applications
फ़ील्ड में हैं। तो, मेरे टेम्पलेट में मेरे पास यह है:
<select name="c_apps[]" size="3" class="multiselect" multiple="multiple">
{foreach from=$apps key=k item=a}
{assign var=v value=$k|@array_search:$code['n_applications']}
<option value="{$k}"{if $v!==FALSE} selected="selected"{/if}>{$a|escape}</option>
{/foreach}
</select>
हालांकि यह अपेक्षा के अनुसार काम नहीं करता है - और सभी विकल्पों का चयन किया जा रहा है। मैंने in_array
फ़ंक्शन का उपयोग करने का प्रयास किया - लेकिन उसी परिणाम के साथ। मेरे बाद क्या हासिल करने का सबसे अच्छा तरीका क्या है?
मुझे लगता है कि यह टेम्पलेट को थोड़ा क्लीनर बनाता है, लेकिन PHP कोड थोड़ा और गंदा है - और यह एचटीएमएल-विशिष्टताओं को PHP में रखता है, जो कि सबसे अच्छा समाधान भी नहीं है।, लेकिन अगर यह काम करता है ... –
I पूरी तरह से आपसे सहमत हैं।इसे साफ़ करने के लिए, आप बस ध्वज सेट कर सकते हैं और अपने स्मार्ट टेम्पलेट में ध्वज की जांच कर सकते हैं, मैं अपने मुख्य पोस्ट में प्रदर्शित करूंगा। – Bjoern
मुझे विचार मिलता है। एक बात जो मुझे इस दृष्टिकोण के बारे में चिंतित करती है वह है कि मैं अपने क्लाइंट को अगले से पूछने की उम्मीद करता हूं, अर्थात्, इन कोडों में से प्रत्येक के इन-प्लेस संपादन के साथ एक तालिका में प्रदर्शित किया गया है। इस मामले में, एक ही पृष्ठ पर कई कोड होंगे, जिनमें से प्रत्येक के अपने अनुप्रयोगों की सरणी होगी - और 'all_applications' की एक सरणी होगी। तो यह वास्तव में गन्दा हो जाएगा ... फिर भी, वैसे भी धन्यवाद। –