我已经好几次面对这个“问题”了,我以同样的方式解决了这个问题,但只是想到我是如何解决的,我觉得很肮脏。
假设我使用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 :(得分:2)
自从我用php编写代码以来已经好几年了,但这似乎是一个普遍的“问题” 您可以将所有字段保存在数组中,然后使用 for-each 循环对每个字段执行操作:
$fields = ["field1", "field2", "..."];
foreach($fields as $field) {
if(isset($form[$field])) {
$form[$field]['#options']['All'] = t('Select...');
}
}