Cakephp 3 - select 如果没有 selection 就不会提交

Cakephp 3 - select not submitted if no selection is made

我有一个带有此 select 输入

的表单(使用表单助手生成)
<div class="input select">
  <label for="pilot-ratings">Pilot Ratings</label>
     <select name="pilot_ratings" class="listbox" size="5" id="pilot-ratings">
        <option value="1">Habilitación de Vuelo Nocturno Local</option>
        <option value="3">Habilitación Cat. II / Cat. III</option>
        <option value="5">Habilitación de Remolque de Planeador</option>                    
     </select>
</div>

只有当一​​个选项被 selected 时,该选项才会添加到 $this->request->data['pilot_ratings'].

是否有任何方法可以强制每次都提交 select 输入的所有选项,无论选项是否 selected 与否?

谢谢。

此致。

您如何在 select 个框之间移动选项?

要自动提交选项,您需要将 selected="selected" 属性添加到 <option> 元素。要在表单的 select 框中提交多个选项,您需要将 multiple 添加到 <select> 元素

如果你想在页面加载时自动提交列表中的所有选项,它需要看起来像这样

     <select name="pilot_ratings" class="listbox" size="5" id="pilot-ratings" multiple>
        <option value="1" selected="selected">Habilitación de Vuelo Nocturno Local</option>
        <option value="3" selected="selected">Habilitación Cat. II / Cat. III</option>
        <option value="5" selected="selected">Habilitación de Remolque de Planeador</option>                    
     </select>

这可以使用 cakephp 表单助手来实现,例如:

<?= $this->Form->input('pilot_ratings',[
    'type' => 'select',
    'class' => 'listbox',
    'size' => 5,
    'id' => 'pilot_ratings',
    'multiple' => 'multiple',
    'options' => [
        ['name' => 'Habilitación de Vuelo Nocturno Local', 'value' => '1', 'selected' => 'selected'],
        ['name' => 'Habilitación Cat. II / Cat. III', 'value' => '2', 'selected' => 'selected'],
        ['name' => 'Habilitación de Remolque de Planeador', 'value' => '5', 'selected' => 'selected']
    ]
]); ?> 

还没有测试过表单助手代码的语法,但这是正确的想法。

我刚刚想到的一件事是在提交表单后如何读取数据。数据仍然会像这样提交:

pilot_ratings=1
pilot_ratings=3
pilot_ratings=5

默认情况下,我认为(还没有实际测试过)$this->request->data['pilot_ratings']; 只会保留这些值之一,第一个值或最后一个值,因为它会不断覆盖自己。

如果是这种情况,您可能需要更改表单方法以获取

然后从查询字符串中提取所有值,您可以从以下位置获得:

$this->request->here();