laravel - Laravel - 如何正确获取具有相同名称的复选框值?
问题描述
我的模型(具有 2 个主键并且同时是外键的表):
class FormationPersonnel extends Model
{
protected $fillable = ['cin', 'id_form'];
public $incrementing = false;
}
我用 JQuery、Ajax 创建复选框,如下所示:
var grabData = "";
for (let i = 0; i < data.length; i++) {
grabData +=
`<div class="col-lg-4 col-sm-6">
<div class="custom-control custom-checkbox">
<input type="checkbox" name="cin[]" id="`+data[i]["cin"]+`" class="custom-control-input" value="`+data[i]["cin"]+`">
<label for="`+data[i]["cin"]+`" class="custom-control-label">`+data[i]["cin"]+' '+data[i]["nom"]+' '+data[i]["prenom"]+`</label>
</div>
</div>`;
}
personnelsInput.html("");
personnelsInput.append(grabData);
我将复选框命名为:
name="cin[]"
在我的控制器中,我使用此代码,但不存储来自复选框的任何数据:
$cins = $request->cin; //I get inputs like this
foreach ($cins as $cin) {
$form_pers = new FormationPersonnel; //create new record
if ($request->has($cin)) {
$form_pers->id_form = $request->input('id_form');
$form_pers->cin = $request->input($cin);
$form_pers->save(); //save data
}
}
正确的方法是什么?
解决方案
Model
检查是否有cin的正确方法是
已编辑
根据我们发表的评论,我想我知道你想要做什么,所以像下面的代码那样做以获得你需要的东西。
- 笔记
你不知道什么$cins
值,所以这就是你使用if()
. 无需检查用户是否选中(复选框)。因为检查值仅通过表单发送。请在编码之前尝试了解变量中有哪些数据。
我建议您使用 dd() 或 print_r() 或其他https://laraveldaily.com/echoing-dd-vs-var_dump-vs-print_r/来检查您在变量中获得的数据。
$cins = $request->cin; //getting all checked (from checkbox) data
foreach ($cins as $cin) {
$form_pers = new FormationPersonnel; //new model
$form_pers->id_form = $request->id_form; //get name="id_form" from form
$form_pers->cin = $cin; //put cin value (loop)
$form_pers->save(); //save
}
推荐阅读
- html - 如何创建直接进入网站特定搜索的 html 表单?
- modelica - 关于 Modelica 标准库中组件 HeatCapacitor 的问题
- mysql - MacOS:无法运行 MySQL Workbench
- objective-c - 如何在 NSUserDefaults Objective-C 中转义方括号
- vue.js - Vuex:如何等待动作完成?
- angular - Kendo Datepicker - 在导航窗格中添加月份到年份
- firebase - Firebase 错误:Firebase。没有创建 Firebase 应用“[DEFAULT]”
- python - 将覆盖率和 codecov.io 与 pytest 单元测试和定制的内联测试一起使用
- machine-learning - 如何找到负梯度向量的方向?
- javascript - 无法使用 DragControls