好吧,首先我在数据库上有一个“设置”表,其中有“名称”和“值”字段,它是一种配置类型的表,其中的值可以是从字符串到布尔值等的任何值。
现在,在我的刀片上,我有一个带有各种输入的表单,其中包括“文本”,“选择”,“复选框”等。在控制器上提交表单时,我foreach为每个属性运行一个where,$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和隐藏的输入,但是也许有更好的方法。
慕哥9229398
拉丁的传说