Le problème, ce n'était pas l'initialisation de $selected, mais plutot la valeur que tu lui assignais!
Merci P@t ! Cà marche beaucoup mieux !
Cà ne m'était pas venu à l'esprit d'initialiser $selected :-(
$groups[-1] = '---------'; $selected = -1; /* recherche des groupes en bdd */ $query = ' SELECT id, name FROM '.GROUPS_TABLE.' ORDER BY name ASC ;'; $result = pwg_query($query); while ($row = mysql_fetch_array($result)) { $groups[$row['id']] = $row['name']; if (isset($conf_UserAdvManager[5]) and $conf_UserAdvManager[5] == $row['id']) { $selected = $row['id']; } } $template->assign( 'No_Confirm_Group', array( 'group_options'=> $groups, 'group_selected' => $selected ) );
Je pense avoir compris le principe de {html_options} et je l'ai mis en application dans mon code. Avec succès pour ce qui est d'afficher la liste des groupes d'utilisateurs dispo.
La difficulté (pour moi, pauvre erre du php) est de faire en sorte que le nom d'un groupe soit "selected" s'il est présent dans la conf du plugin. Voici comment je vois la chose :
- Le code php :
$groups[-1] = '---------'; /* recherche des groupes en bdd */ $query = ' SELECT id, name FROM '.GROUPS_TABLE.' ORDER BY name ASC ;'; $result = pwg_query($query); while ($row = mysql_fetch_array($result)) { $groups[$row['id']] = $row['name']; } /* initialisation template */ foreach ($groups as $group_id => $group_name) { $selected = (isset($conf_UserAdvManager[5]) and $conf_UserAdvManager[5] == $group_id) ? 'selected="selected"' : ''; $template->assign( 'No_Confirm_Group', array( 'group_options'=> $groups, 'group_selected' => $selected ) ); }
- Le template :
{html_options name="UserAdvManager_No_Confirm_Group" options=$No_Confirm_Group.group_options selected=$No_Confirm_Group.group_selected}
Avec çà, j'ai bien ma liste de groupes mais après sélection d'un item puis validation du formulaire d'enregistrement des valeurs, je retrouve toujours $groups[-1] en "selected" par défaut et non ce qu'il y a dans la table de conf du plugin (j'ai vérifié, l'id du groupe sélectionné est bien en base de données).
Cà fait des heures que je tourne en rond, à m'arracher les cheveux pour trouver ce qui cloche...
Désolé de faire le balour sur une question qui peut paraitre aussi simpliste. Je ne demande pas la solution toute faite mais une piste (je suis partisan de "la main dans le camboui pour apprendre").
Quel est le tpl qui pourrait nous lister les groupes...
/admin/template/goto/user_.......tpl
Quel est le php qui pourrait me servir d'exemple pour affecter les différentes valeurs...
/admin/user_.......php
// Filter group options
$template->assign('group_options', $groups);
$template->assign('group_selected',
isset($_GET['group']) ? $_GET['group'] : '');
Mais bien sur ! Le nouveau moteur !!
J'ai appliqué {html_options} et çà va déjà un peu mieux. Mais j'ai encore des soucis car j'ai l'impression que la requête ne remonte pas les valeurs demandées à moins que çà ne soit le template qui ne les affiche pas.
Je vais essayer de m'inspirer d'un plugin qui utilise ce système... Me reste le trouver.
Merci pour le coup de main !
Alors http://smarty.net/manual/fr/language.fu … oreach.php
C'est vrai que j'ai eu un cas où {html_options} ne me convenait pas car je voulais un keyword qu'il ne génère pas... Je ne sais plus lequel (title ou alt ...) et donc je l'ai généré moi-même avec un foreach...
foreach est ton ami. Inspire toi de template qui font le même genre de choses.
<!-- BEGIN No_Confirm_Group -->
<!-- END No_Confirm_Group -->
=Ancien moteur de template...
Nouveau moteur...
http://smarty.net/manual/fr/language.fu … ptions.php
Bonjour à tous.
J'arrive enfin à me dégager un peu de temps pour tenter de migrer les quelques plugins, dont NBC_UserAdvancedManager) qui me manquent pour basculer ma galerie de 1.7.3 en 2.0.1. Mais je galère bêtement sur un petit truc qui me prend la tête :
Je cherche à mettre une listbox sur une page d'administration de NBC_UserAdancedManager de manière à ce qu'elle propose les groupes d'utilisateurs configurés sur une galerie et permette d'en sélectionner un. En version 1.7.x, pas de problème mais le même code en 2.0.x ne m'affiche qu'un seul item alors qu'il y en à 3...
Voici mon code de gestion de cette liste :
$groups = array(); $query = ' SELECT id, name FROM '.GROUPS_TABLE.' ORDER BY name ASC ;'; $result = pwg_query($query); while ($row = mysql_fetch_array($result)) { $groups[$row['id']] = $row['name']; } $blockname = 'No_Confirm_Group'; $template->assign( $blockname, array( 'VALUE'=> -1, 'CONTENT' => '------------', 'SELECTED' => '' )); foreach ($groups as $group_id => $group_name) { $selected = (isset($conf_nbc_UserAdvManager[5]) and $conf_nbc_UserAdvManager[5] == $group_id) ? 'selected="selected"' : ''; $template->assign( $blockname, array( 'VALUE' => $group_id, 'CONTENT' => $group_name, 'SELECTED' => $selected )); } $template->assign( array( 'UserAdvManager_No_Confirm_Group' => $conf_nbc_UserAdvManager[5], ) );
Et la partie template :
<select name="UserAdvManager_No_Confirm_Group"> <!-- BEGIN No_Confirm_Group --> <option value="{$No_Confirm_Group.VALUE}" {$No_Confirm_Group.SELECTED} > {$No_Confirm_Group.CONTENT}</option> <!-- END No_Confirm_Group --> </select>
Normalement, je devrais avoir les items suivants :
------
group1
group2
group3
Mais la liste ne me permet pas de choisir et seul le group1 est disponible. Le même code sur une galerie 1.7.x fonctionne. Je pense donc qu'il y a quelque chose que j'ai raté pour que çà fonctionne en 2.0.x.
Merci d'avance pour le coup de main !