Cakephp 3 - 如果没有选择,则选择未提交

时间:2016-04-15 01:16:29

标签: cakephp select input submit

我有一个表单(使用表单助手生成)和这个选择输入

<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;]。

有没有办法强制在每次选择选项时都提交选择输入的所有选项?

感谢。

问候。

1 个答案:

答案 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();