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

表单提交时如何验证编辑帖子的单选按钮是否被选中?

如何验证Laravel表单提交时是否有帖子单选按钮被选中

看起来你是想在表单提交后验证是否有帖子对应的单选按钮被选中,但你的控制器逻辑里有个小问题,导致$isAnyPostButtonChecked永远会是false,我来帮你修正并优化这个实现。

问题分析

你当前的代码里,初始把$isAnyPostButtonChecked设为false,然后用&&去判断:

$isAnyPostButtonChecked = false; 
$isAnyPostButtonChecked = $isAnyPostButtonChecked && (old('radiobutton') && old('radiobutton') == $event->id); 

因为false && 任何表达式的结果都是false,所以不管单选按钮有没有被选中,这个变量最终都会是false,这显然不是你想要的效果。

修正后的控制器方法

我们需要调整逻辑,根据你的需求选择对应的实现方式:

场景1:验证是否选中了特定帖子的单选按钮

如果你要确认提交的单选按钮是否是当前编辑的帖子ID,可以这样写:

public function edit($id) { 
    // 获取当前编辑的帖子数据
    $post = Post::findOrFail($id);
    // 假设你已经有$event数据的获取逻辑
    $event = // 你的事件数据获取代码

    // 判断旧输入中是否选中了当前帖子对应的单选按钮
    $isPostButtonChecked = old('radiobutton') == $post->id;

    return view('posts.edit') 
        ->with('post', $post) 
        ->with('isPostChecked', $isPostButtonChecked); 
}

场景2:验证是否有任意一个单选按钮被选中

如果只是想知道是否有单选按钮被提交(不管选的是哪个),可以简化为:

public function edit($id) { 
    $post = Post::findOrFail($id);

    // 判断旧输入中是否存在单选按钮的值
    $isAnyPostChecked = !empty(old('radiobutton'));

    return view('posts.edit') 
        ->with('post', $post) 
        ->with('isAnyPostChecked', $isAnyPostChecked); 
}

视图中的验证展示

在视图里,你可以根据传递的变量展示验证结果,或者给出提示:

{{-- 直接显示选中状态 --}}
<p>是否有单选按钮被选中:{{ $isAnyPostChecked ? '是' : '否' }}</p>

{{-- 若未选中则显示警告提示 --}}
@if(!$isAnyPostChecked)
    <div class="alert alert-warning">请选择一个帖子对应的单选按钮</div>
@endif

{{-- 单选按钮的正确渲染示例(保持提交前的选中状态) --}}
<input type="radio" name="radiobutton" value="{{ $post->id }}" {{ old('radiobutton') == $post->id ? 'checked' : '' }}>
<label>{{ $post->title }}</label>

这样调整后,就能准确判断表单提交时是否有单选按钮被选中,并且正确传递状态到视图了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:05:56