2013-10-13 2 views
1
foreach($product_categories as $product_category) 
    { 
     $options = array(); 
     foreach($series_categories as $series_category) 
     { 
      if($product_category['prod_cate_idx'] == $series_category['prod_cate_idx']) 
      { 
       $options[$series_category['series_cate_idx']] = $series_category['series_cate_name']; 
      } 
     } 
     if(count($options) > 0) 
     { 
      $series_category_dropdown[$product_category['prod_cate_name']] = $options; 
     } 
     else 
     { 
      //problem here. how to make a empty optgroup? 
      $series_category_dropdown[$product_category['prod_cate_name']] = array('', NULL); 
     } 
     empty($options); 
    } 

Bon, j'ai deux catégories ici - l'une est des catégories de produits et l'autre est des catégories de la série qui entre dans l'une des catégories de produits. Une catégorie de produit peut ou non comporter des catégories de séries.CodeIgniter] Optgroup vide utilisant form_dropdown

que je dois faire un menu déroulant comme ceci:

  • A
    • un
    • un
    • un
    • un
  • B
    • b
    • b
    • b
  • C
  • D
  • E
    • e
    • e
    • e

Le code donné fonctionne parfaitement sauf que je ne sais pas comment traiter les optgroups vides: S

I googlé tonnes pour savoir comment générer optgroups vides comme C & D mais n'ont pas trouvé solutions ou quelqu'un a déjà essayé :(Quelqu'un at-il une idée de comment je devrais générer un tableau multidimensionnel pour y arriver? Je vous remercie.

Répondre

1

En regardant à travers le code de base de CI, ce n'est pas possible. Cependant, il y a une solution vraiment facile pour cela en éditant un fichier core, la raison pour laquelle je pense que vous pourriez "sortir" avec l'édition d'un fichier core est parce que cela ne va pas affecter votre menu déroulant:

  1. Accédez à /system/helpers/form_helper.php
  2. Trouver la fonction form_dropdown
  3. Ajouter if(empty($optgroup_val)) continue; après la boucle optgroup

Vous boucle foreach devrait ressembler à ceci:

foreach ($val as $optgroup_key => $optgroup_val) 
{ 
    // add this line 
    if(empty($optgroup_val)) continue; 

    $sel = (in_array($optgroup_key, $selected)) ? ' selected="selected"' : ''; 

    $form .= '<option value="'.$optgroup_key.'"'.$sel.'>'.(string) $optgroup_val."</option>\n"; 
} 

Comme je l'ai dit plus haut, le plus souvent je recommande de ne pas modifier un fichier de base, mais l'extension de la classe d'aide de CI, et le fait CI (il est juste un peu plus de travail):

Pour "étendre" les assistants, créez un fichier dans votre dossier application/helpers/ avec un nom identique à celui de l'assistant existant, mais avec le préfixe MY_ (cet élément est configurable. Voir ci-dessous.).

Référence: "Extending" Helpers in Helper Functions

+1

Impressionnant !! Merci ! – Raccoon

Questions connexes