1

現在のビューのすべての実際の値を収集する選択オプション ドロップダウン フィールドを備えた公開フィルターがあります。残念ながら、ビュー内の空のフィールドも収集して表示します。

これを処理するモジュールを作成しようとしましたが、現在公開されているフィルターを実際に更新することはできません。助言がありますか?

function remove_duplicated_publications_form_alter(&$form, &$form_state, $form_id) {
  if($form_id == 'views_exposed_form'){
    foreach($form as $tmp){
      if ($tmp["#type"]=="select"){
        foreach($tmp["#options"] as $tjek){
          if ($tjek==NULL){
            unset ($tmp["#options"][$tjek]);
          }
        }
      }
    }
  } 
}

--- 解決策が見つかりました!! --- 代わりに $form 配列の設定を解除する必要がありました。次のコードが機能します。

function remove_duplicated_publications_form_alter(&$form) {
  foreach($form['#info'] as $field){
    $field_id = $field['value'];
    if ($form[$field_id]["#type"]=="select"){
      foreach($form[$field_id]["#options"] as $optionvalue){
        if ($optionvalue==NULL){
          unset ($form[$field_id]["#options"][$optionvalue]);
        }
      }
    }
  }
}
4

1 に答える 1

0

unset()と組み合わせてarray_walk()を使用します

于 2012-10-09T18:16:38.597 に答える