Sto utilizzando php con smarty. In php Ho due matrici:Smarty: controlla se la variabile è nell'array
$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
)
)
e
$all_application = Array
(
[1] => New registration
[2] => Mid-subscription upgrade
[3] => Subscription renewal
[4] => Additional purchase
)
noti che la seconda matrice può - e sarà - crescere, questo è i dati di riferimento, da cui n_applications
campo array nella prima matrice è costruito. Cioè, la matrice in n_applications
conterrà un sottoinsieme di chiavi dagli array $all_applications
.
Ora, sto assegnando questi due array nel modello:
$template->assign('code', $code);
$template->assign('apps', $all_applications);
E nel modello, Sto creando un modulo per la modifica dei campi nella matrice $code
. Tutto funziona bene tranne la selezione 'applicazioni'. Voglio preselezionare quelle app che sono già nel campo n_applications
. Così, nel mio modello ho questo:
<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>
Tuttavia questo non funziona come previsto - e tutte le opzioni finiscono per essere selezionati. Ho provato a utilizzare la funzione in_array
, ma con lo stesso risultato. Qual è il modo migliore per ottenere ciò che cerco?
Suppongo che questo rende il modello un po 'più pulito, ma il codice PHP un po' più sporco - e inserisce specifiche HTML nel PHP, che non è anche la soluzione migliore., Ma se funziona ... –
I totalmente d'accordo con te lì.Per pulire questo, potresti anche solo impostare una bandiera e nel tuo modello smarty controllare la bandiera, farò una dimostrazione nel mio post principale. – Bjoern
Ho capito. Una cosa che mi preoccupa un po 'di questo approccio è ciò che anticipo il mio cliente a chiedere in seguito, vale a dire, questi codici visualizzati in una tabella con la modifica sul posto di ciascuno di essi. In questo caso, ci saranno più codici sulla stessa pagina, ognuno con una propria serie di applicazioni e un array di "tutte_applicazioni". Allora diventerà davvero disordinato ... Eppure, grazie lo stesso. –