【发布时间】:2014-06-09 19:17:22
【问题描述】:
我在 laravel 中有一个表单,将多个复选框组合在一起,供用户选择游戏的统计信息。提交时,即使没有选中任何框,表单也会向服务器发送一个值,这很奇怪。
Laravel:
@for ($i = 1; $i < count($data['stats']); $i++)
<input tabindex="1" type="checkbox" name="stats[]" id="{{ $data['stats'][$i]->Field }}" value="{{ $data['stats'][$i]->Field }}"> {{ $data['stats'][$i]->Field }}<br>
@if ($i == 11)
</div>
<div class="col-sm-6">
@endif
@endfor
</div>
</div>
生成此 HTML:
<div class="row">
<div class="col-sm-6">
<input tabindex="1" type="checkbox" name="stats[]" id="Prestige" value="Prestige"> Prestige<br>
<input tabindex="1" type="checkbox" name="stats[]" id="Level" value="Level"> Level<br>
<input tabindex="1" type="checkbox" name="stats[]" id="Experience" value="Experience"> Experience<br>
<input tabindex="1" type="checkbox" name="stats[]" id="Points" value="Points"> Points<br>
<input tabindex="1" type="checkbox" name="stats[]" id="Kills" value="Kills"> Kills<br>
<input tabindex="1" type="checkbox" name="stats[]" id="Deaths" value="Deaths"> Deaths<br>
<input tabindex="1" type="checkbox" name="stats[]" id="TeamWins" value="TeamWins"> TeamWins<br>
<input tabindex="1" type="checkbox" name="stats[]" id="TeamLosses" value="TeamLosses"> TeamLosses<br>
<input tabindex="1" type="checkbox" name="stats[]" id="Bonus" value="Bonus"> Bonus<br>
<input tabindex="1" type="checkbox" name="stats[]" id="AchievementScore" value="AchievementScore"> AchievementScore<br>
<input tabindex="1" type="checkbox" name="stats[]" id="Demented" value="Demented"> Demented<br>
</div>
<div class="col-sm-6">
<input tabindex="1" type="checkbox" name="stats[]" id="Volatile" value="Volatile"> Volatile<br>
<input tabindex="1" type="checkbox" name="stats[]" id="Undead" value="Undead"> Undead<br>
<input tabindex="1" type="checkbox" name="stats[]" id="Scavenger" value="Scavenger"> Scavenger<br>
<input tabindex="1" type="checkbox" name="stats[]" id="Divinity" value="Divinity"> Divinity<br>
<input tabindex="1" type="checkbox" name="stats[]" id="Withered" value="Withered"> Withered<br>
<input tabindex="1" type="checkbox" name="stats[]" id="Killswitch" value="Killswitch"> Killswitch<br>
<input tabindex="1" type="checkbox" name="stats[]" id="Precise" value="Precise"> Precise<br>
<input tabindex="1" type="checkbox" name="stats[]" id="Adept" value="Adept"> Adept<br>
<input tabindex="1" type="checkbox" name="stats[]" id="Utility" value="Utility"> Utility<br>
<input tabindex="1" type="checkbox" name="stats[]" id="Class" value="Class"> Class<br>
<input tabindex="1" type="checkbox" name="stats[]" id="Perk" value="Perk"> Perk<br>
</div>
</div>
<button type="submit" class="btn btn-info btn-block" data-after="Updated Statistics|check" style="margin-top: 6px">Update Statistics</button>
</form>
</div>
在服务器端:
if(Input::has('stats')) {
$stats = Input::get('stats');
if(is_array($stats)) {
echo 'It is an array!';
print_r($stats);
} else { echo 'no'; }
}
$stats 总是返回Perk,这是列表中的最后一个。有什么想法吗?
【问题讨论】:
-
向下滚动,这是最后一个输入。
-
这看起来很可疑。我怀疑是框架问题。好的,如何检查? 'var_dump($_POST['stats']);'在输入的早期,最好是在'index.php'中。如果在“index.php”中设置了“perk”,那么它就是表单,如果它不存在但稍后设置它就是“框架”。你如何解决它?之后。签入“控制器”可能为时已晚,因为您不知道那时发生了什么处理。