2017-06-20 80 views
0

我已經多次面對這個「問題」了,我以同樣的方式解決了這個問題,但是我只是想着如何解決問題而感到骯髒。有沒有更好的方法來編寫以下內容?

假設我使用Drupal 8,並且需要通過「選擇...」修改多個選擇表單的默認值「-Any-」。

這是我每次進行:

if(isset($form['field_children_charge_value'])) { 
     $form['field_children_charge_value']['#options']['All'] = t('Select...'); 
    } 
    if(isset($form['field_evolution_target_id'])) { 
     $form['field_evolution_target_id']['#options']['All'] = t('Select...'); 

    } 
    // And so on 

我覺得不好寫這樣的,但是,對於我的防守,我沒有很多的PHP理論學習的同時,我直接拿到了實踐課程。

一個elseif表達式只會工作一次,因爲第一個條件將匹配先決條件,並且它不會檢查是否有其他條件也可以工作。

我也用javascript解決了這個問題,而且我也做了同樣的事情。

那麼,有沒有更好的語法,如果是的話,它是什麼?

+0

你每次做同樣的事情? – manian

+0

是的,這就是困擾我 – Jaeger

+1

你可以在數組中使用id並在foreach循環中使用它 – manian

回答

2

由於我使用php編碼,因此這似乎是一個普遍的「問題」。
您可以保存在陣列所有字段,然後用的for-each循環對他們每個人的執行操作:

$fields = ["field1", "field2", "..."]; 

foreach($fields as $field) { 
    if(isset($form[$field])) { 
    $form[$field]['#options']['All'] = t('Select...'); 
    } 
} 
+0

我想下次我會這樣做,謝謝 – Jaeger

相關問題