Filtres exposer d'une view en checkbox

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

J’ai en effet un problème et j’aimerai connaitre quelques idées pour réussir à le résoudre...

J'essaie de créer une page sur laquelle je mets une vue avec des champs exposés, mais le problème c'est que je veux avoir ces champs en checkbox. Pour les checkboxs j'ai réussi à les mettre en place mais le formulaire ne marche plus parce que les champs sont envoyés par URL sous format:
nom_de_mon_filtre[valeur_de_ce_filtre]=valeur_de_ce_filtre

alors que normalement, avec les filtres exposés sous forme de listes déroulantes (le type de champs select) j'ai le filtre envoyé par URL sous format: nom_de_mon_filtre=valeur_de_ce_filtre

J'ai même essayé de créer un autre formulaire avec les même noms des filtres, en utilisant le type checkboxes, mais j'ai toujours le même problème :(

J'ai essayé de changé la façon dont les checkboxes sont envoyés mais en vain....:s, j'ai cherché des solutions sur le net mais négatif...

Toute proposition sera la bienvenue surtout que je dois livrer la première partie du site d'içi la fin du mois et jusque là je n'ai pu rien faire à cause de ce problème...

Forum : 
Version de Drupal : 

Bonjour Selinav,

Merci de m'avoir répondu si vite...

En bas le code de mon fichier .module

<?php
function costum_block($op = 'list', $delta = 0, $edit = array()) {
switch($op) {
case 'list' :
// Enumération des blocs disponibles
{
drupal_set_message('ok');
$view = views_get_view('recherche_offres');
$blocs = array();
$blocs['filtres_recherche'] = array('info' => t('info: Bloc de filtres de recherche'),
'cache' => BLOCK_CACHE_GLOBAL );
return $blocs;
} // fin du cas 'list'
case 'view' :
// Génération du contenu à afficher pour le block
{
$bloc = array();
if ($delta == 'filtres_recherche') {
// Construction du contenu
//$contenu = exposed_filters();
$contenu = drupal_get_form('callex_formulaire');

// Ajout du message
//$contenu .= "" . variable_get('hello_world_message', "pas de message défini");
// Construction du block
$bloc['subject'] = t('Subject: Bloc de filtres de recherche');
$bloc['content'] = $contenu;
}
return $bloc;
} // fin du cas 'view'

} // fin switch

} // fin hook

function callex_formulaire($form_state){
$form = array();
$form['#action'] = 'ma_recherche';
$form['#method'] = 'GET';
$form['#attributes'] = array('id' => 'views-exposed-form-recherche-offres-page-1');

//Les checkboxes de Métiers
$form['metiers'] = array(
'#type' => 'checkboxe',
'#title' => t('M&eacute;tiers'),
'#prefix' => '<div class="form-item" id="edit-ville-wrapper">',
'#suffix' => '</div>',
'#options' => array(
'achats_transports_logistique' => t('Achats, transports, logistique'),
'commercial_vente' => t('Commercial, vente'),
'gestion_comptabilite_finance' => t('Gestion, comptabilit&eacute;, finance'),
'informatique_nouvelles_technologies' => t('Informatique, nouvelles, technologies'),
'management_direction_generale' => t('management, direction, g&eacute;n&eacute;rale'),
'marketing_communication' => t('Marketing, communication'),
'metiers_sante_social' => t('M&eacute;tiers, sant&eacute;, social'),
'metiers_services' => t('M&eacute;tiers, services'),
'metiers_btp' => t('M&eacute;tiers BTP'),
'production_maintenance_qualite' => t('Production, maintenance, qualit&eacute;'),
'rh_juridique_formation' => t('RH, juridique, formation'),
'rd_gestion_projets' => t('R&amp;amp;D, gestion de projets'),
'secretariat_assistanat' => t('Secr&eacute;tariat, assistanat'),
'tourisme_hotellerie_restauration' => t('Tourisme, h&ocirc;tellerie, restauration'),
)
);

//Les checkboxes de Sécteurs d'activité
$form['secteurs'] = array(
'#type' => 'checkboxes',
'#title' => t('S&eacute;cteurs d\'activit&eacute;'),
'#options' => array(
'activites_associatives' => t('Activit&eacute;s associatives'),
'commercial_vente' => t('Commercial, vente'),
'gestion_comptabilite_finance' => t('Gestion, comptabilit&eacute;, finance'),
'informatique_nouvelles_technologies' => t('Informatique, nouvelles, technologies'),
'management_direction_generale' => t('management, direction, g&eacute;n&eacute;rale'),
'marketing_communication' => t('Marketing, communication'),
'metiers_sante_social' => t('M&eacute;tiers, sant&eacute;, social'),
'metiers_services' => t('M&eacute;tiers, services'),
'metiers_btp' => t('M&eacute;tiers BTP'),
'production_maintenance_qualite' => t('Production, maintenance, qualit&eacute;'),
'rh_juridique_formation' => t('RH, juridique, formation'),
'rd_gestion_projets' => t('R&amp;amp;D, gestion de projets'),
'secretariat_assistanat' => t('Secr&eacute;tariat, assistanat'),
'tourisme_hotellerie_restauration' => t('Tourisme, h&ocirc;tellerie, restauration'),
)
);

//Les checkboxes de Ville
$form['ville'] = array(
'#type' => 'checkboxes',
'#title' => t('Villes'),
'#options' => array(
'agadir' => t('Agadir'),
'casablanca' => t('Casablanca'),
'fes' => t('F&egrave;s'),
'laayoune' => t('La&acirc;youne'),
'marrakech' => t('Marrakech'),
'meknes' => t('Mekn&egrave;s'),
'oujda' => t('Oujda'),
'rabat' => t('Rabat'),
'tanger' => t('Tanger'),
)
);

$form['envoyer'] = array(
'#type' => 'submit',
'#value' => 'Envoyer'
);
$form['#after_build'][] = 'callex_formulaire_after_build';
return $form;

}

function callex_formulaire_after_build($form, &$form_state) {
unset($form['form_build_id'], $form['form_token'], $form['form_id'],$form['submit']);
//drupal_set_message('

'. print_r($form, 1) .'

');
return $form;
}