Хорошо, во-первых, у меня есть таблица «settings» в моей базе данных, в которой у меня есть поля «name» и «value», это таблица конфигурации, где значением может быть что угодно - от строковых до логических значений и т. Д.
Теперь на моем блейде у меня есть форма с различными входными данными: "тексты", "выбирает", "флажки" и т. Д. При отправке формы на контроллере я запускаю 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')
, но из-за динамической природы таблицы в базе данных я не хочу жестко прописывать в моем контроллере имя определенного параметра.
Моя цель заключается в том, чтобы код на моем контроллере был одинаковым независимо от количества различных настроек, которые я буду использовать на своем веб-интерфейсе (возможно, в будущем потребуется добавить больше).
Итак, мой вопрос, есть ли способ обработки этих флажков на стороне сервера без необходимости обращаться к ним конкретно, или способ всегда возвращать значение флажков на сервер, несмотря на его состояние?
Моя первая мысль - использовать javascript и скрытые входные данные, но, возможно, есть лучший способ.