You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中POST表单select值获取异常,始终设为true问题求助

问题分析与解决

问题原因

不管用户选择「Public」还是「Private」,$request->input('is_private')都会返回对应的选项值(is_public或is_private),永远不会是null。这导致你写的if (null !== $request->input('is_private'))条件始终成立,所以$event->is_private永远被设置为'true'。

解决方案

你可以通过以下两种方式修复:

方案1:修改HTML选项值(推荐,更贴合布尔逻辑)

把下拉选项的value改成直接对应布尔状态的数值:

<form method="POST" action="{{ route('createEvent') }}">
    <label for="is_private">Privacy</label>
    <select id="is_private" name="is_private" required autofocus>
        <option value="" disabled selected>-- select one --</option>
        <option value="0">Public</option>
        <option value="1">Private</option>
    </select>
</form>

然后在控制器中直接判断赋值:

// 如果数据库字段是字符串类型
$event->is_private = $request->input('is_private') === '1' ? 'true' : 'false';

// 如果数据库字段是布尔类型,更推荐直接存布尔值
$event->is_private = $request->input('is_private') === '1';

方案2:直接判断原选项值(不修改HTML)

保持现有HTML不变,控制器里判断具体的选项值:

if ($request->input('is_private') === 'is_private') {
    $event->is_private = 'true';
} else {
    $event->is_private = 'false';
}

内容的提问来源于stack exchange,提问作者Guilherme Moreira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 16:30:45