gpt4 book ai didi

php - 如何将未选中的复选框提交给 Controller

转载 作者:行者123 更新时间:2023-12-04 01:09:54 25 4
gpt4 key购买 nike

好的,首先我在我的数据库中有一个“设置”表,其中有字段“名称”和“值”,它是一种配置类型的表,其中值可以是从字符串到 bool 值等的任何值。

现在在我的 Blade 上,我有一个带有各种输入“文本”“选择”“复选框”等的表单。当在 Controller 上提交表单时,我运行一个foreach,其中对于$request 我将其键作为名称存储,将值作为数据库中的值存储。

$agency_id = Auth::user()->agency->id;
$settings = AgencySettings::whereAgencyId($agency_id)->get();
foreach ($request->except('_token') as $key => $value)
{
$setting = $settings->where('name','=',$key)->first();
if (boolval($setting))
{
$setting->value = $value;
$setting->update();
}else{
$setting = new AgencySettings;
$setting->agency_id = $agency_id;
$setting->name = $key;
$setting->value = $value;
$setting->save();
}
}

$request 中未选中的复选框外,一切正常。我知道我可以像这样处理它们 $request->has('name_of_checkbox') 但由于数据库表的动态特性,我不想在我的 Controller 上硬编码特定设置的名称。

我的目标是无论我将在前端使用多少不同的设置,我的 Controller 上的代码都将是相同的(也许将来需要添加更多)。

所以我的问题是,有没有一种方法可以在服务器端处理这些复选框而不必专门引用它们,或者有一种方法总是将复选框的值返回给服务器而不考虑其状态?

我的第一个想法是使用 javascript 和隐藏输入,但也许有更好的方法。

最佳答案

您可以在要接收的每个复选框前添加一个同名的隐藏字段,例如:

<input type="hidden"   name="checkbox-1" value="0" /> 
<input type="checkbox" name="checkbox-1" value="1" /> My checbox 1

当该字段未选中时,这将发送具有 0 值的隐藏字段,并在选中时发送正确的真值。

注意:只需确保您首先添加隐藏字段,这样当该字段被选中时您将只收到选中的字段。

关于php - 如何将未选中的复选框提交给 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55827752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com