更改组合框的默认值

Change default value on a combo box

我正在使用 osTicket,我们想更改组合框的默认值。

这是组合框所在的代码:

    <tr>
        <td width="160">
            <?php echo __('Department'); ?>:
        </td>
        <td>
            <select name="deptId">
                <option value="" selected >&mdash; <?php echo __('Select Department'); ?>&mdash;</option>
                <?php
                if($depts=Dept::getDepartments()) {
                    foreach($depts as $id =>$name) {
                        echo sprintf('<option value="%d" %s>%s</option>',
                                $id, ($info['deptId']==$id)?'selected="selected"':'',$name);
                    }
                }
                ?>
            </select>
            &nbsp;<font class="error"><?php echo $errors['deptId']; ?></font>
        </td>
    </tr>

我希望默认值为 'Unassigned',这是组合框中的选项之一:

当我进行更改时,我最终再次添加了该值,然后它没有保存它。

这是我的更改,但效果不佳:

<option value="" selected >Unassigned</option>

有什么建议吗?

我认为您可以在 foreach 循环中检查正确的值,然后为该值分配选定的属性。

 <?php
                if($depts=Dept::getDepartments()) {
                    foreach($depts as $id =>$name) {
                    if($id === $info["deptId"]) {
                        echo '<option value="$id" selected="selected">$name</option>';
                     } else 
                            {
                       echo '<option value="$id">$name</option>';
                      }
                                
                    }
                }
                ?>

尝试找出 "Unassigned" 选项的正确值是多少。 您可以通过查看原始 HTML-代码来做到这一点。我怀疑它是这样的整数:

<option value="7">Unassigned</option>

如果 "Unassigned" 的正确值对应于表达式“7”,您应该尝试找出 $info['deptId'] 的默认值是什么。您可以通过在您的 php 代码中的某处插入一个 var_dump($info['deptId']) 来做到这一点。我怀疑它是一个空字符串或 NULL。假设它是一个空字符串,您应该在打印 select 之前插入以下代码:

if($info['deptId'] == "") {
    $info['deptId'] = 7;
}

由于原始逻辑,如果 $info['deptId'] 的值具有 "Unassigned" 的正确值,则 "Unsassigned" 选项应该 selected。负责该行为的重要代码是:

($info['deptId']==$id)?'selected="selected"':''