Smarty: vérifier si la variable est dans la gamme

Je suis à l'aide de php avec smarty. En php j'ai deux tableaux:

$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
        )
)

et

$all_application = Array
(
    [1] => New registration
    [2] => Mid-subscription upgrade
    [3] => Subscription renewal
    [4] => Additional purchase
)

Noter que le deuxième tableau, peut - et va - grandir, c'est les données de référence à partir de laquelle n_applications de la matrice de champ dans le premier tableau est construit. Qui est, le tableau dans n_applications contiendra un sous-ensemble de clés à partir de la $all_applications tableaux.

Maintenant, je suis de l'attribution de ces deux tableaux dans le modèle:

$template->assign('code', $code);
$template->assign('apps', $all_applications);

Et dans le modèle, je suis de la création d'un formulaire pour modifier les champs de la $code tableau. Tout fonctionne bien sauf les "applications" de la sélection. Je tiens à pré-sélectionner les applications qui sont déjà dans le n_applications champ. Donc, dans mon template, j'ai ceci:

<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>

Cependant cela ne fonctionne pas comme prévu - et TOUTES les options finissent par être sélectionné. J'ai essayé d'utiliser in_array fonction - mais avec le même résultat. Quelle est la meilleure façon de réaliser ce que je suis après?

InformationsquelleAutor Aleks G | 2011-11-11