我有一个表单(使用表单助手生成)和这个选择输入
<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>
只有选择了一个选项后,该选项才会添加到$ this-&gt; request-&gt; data [&#39; pilot_ratings&#39;]。
有没有办法强制在每次选择选项时都提交选择输入的所有选项?
感谢。
问候。
答案 0 :(得分:1)
如何在选择框之间移动选项?
自动提交您需要将selected="selected"
属性添加到<option>
元素的选项。要在表单的选择框中提交许多选项,您需要将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 Form helper来实现,如:
<?= $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
默认情况下我认为(havnt实际测试了这个)$this->request->data['pilot_ratings'];
只会保留其中一个值,无论是第一个还是最后一个,因为它会一直覆盖自己。
如果是这种情况,您可能需要更改表单方法以获取
然后从查询字符串中提取所有可以从中获取的值:
$this->request->here();