作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好的,首先我在我的数据库中有一个“设置”表,其中有字段“名称”和“值”,它是一种配置类型的表,其中值可以是从字符串到 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/
我是一名优秀的程序员,十分优秀!