我的输入论坛包含2
个选项checkbox
和input
字段。
我只想选中复选框<{1}} 否则忽略该输入字段。
get value of input field
目前,无论是否检查,我都会在控制器中获取所有输入:
@foreach($list as $columns)
<div class="input-group">
<span class="input-group-addon">
<input type="checkbox" checked="checked">
</span>
<input type="text" name="{{$columns}}" value="{{$columns}}" class="form-control">
</div><!-- /input-group -->
@endforeach
如何将此传递给我的控制器功能?
$column = $request->except('_token');
:我的代码as requested
dd是:
$list
要清楚它是如何工作的我包括截图
答案 0 :(得分:1)
1)将复选框名称更改为cb []并输入到输入[]
@php
$no = 0;
@endphp
@foreach($list as $columns)
@php
$no+=1;
@endphp
<div class="input-group">
<span class="input-group-addon">
<input type="checkbox" name="cb[{{$no}}]" checked="checked">
</span>
<input type="text" name="input[{{$no}}]" value="{{$columns}}" class="form-control">
</div><!-- /input-group -->
@endforeach
2)过滤您的$ request并仅包含选中的复选框
$input = $request->except('_token');
foreach ($input['cb'] as $key => $value) {
if ($value== 'on') {
$getRealInput[$key] = $input['input'][$key];
}
}
return $getRealInput;
答案 1 :(得分:0)
您可以将复选框命名为数组
foreach ($request->cb as $checked) {
$request->{$checked} // The textbox corresponding to the selected checkbox
}
并且在您的控制器中,您可以将选中的项目作为
mvn install
答案 2 :(得分:0)
试试这个:
1)首先提到复选框名称,如下所示:
@foreach($list as $columns)
<div class="input-group">
<span class="input-group-addon">
<input name="checkbox" type="checkbox" checked="checked">
</span>
<input type="text" name="{{$columns}}" value="{{$columns}}" class="form-control">
</div><!-- /input-group -->
@endforeach
2)在Controller中试试这个:
$inputs = asset($request->checkbox) && $request->checkbox !='' ? $request->except('_token') : []; //if you want to remove input fields use unset inputs instead of []
dd($inputs)
答案 3 :(得分:0)
你应该试试这个:
更新答案:
@foreach($list as $columns)
<div class="input-group">
<span class="input-group-addon">
<input type="checkbox" name="columns[]" value="{{ $columns }}">
</span>
<input type="text" name="{{$columns}}" value="{{$columns}}" class="form-control">
</div><!-- /input-group -->
@endforeach
在控制器中:
$columns = $request->columns;
print_r($columns);
答案 4 :(得分:0)
首先,使用唯一名称标识每个复选框(使用columns[]
)。
在您强调 $columns
中text input field
的值时,我猜您不希望手动输入(修改)。如果是这样,您可以使用label
代替:
@foreach($list as $key => $columns)
<div class="input-group">
<span class="input-group-addon">
<input name="columns[]" type="checkbox" value={{$key}} checked="checked">
</span>
<label class="form-control">{{$columns}}</label>
</div>
@endforeach
<强>更新强>
查看
@foreach($list as $key => $columns)
<span class="input-group-addon">
<input name="col_keys[]" type="checkbox" value={{$key}} checked="checked">
</span>
<input type="text" name="col_texts[]" value="{{$columns}}" class="form-control">
@endforeach
CONTROLLER
现在$request->col_keys
将有一个数组,对$request->col_texts
有效。所以做一个排序:
$valid_keys = $request->col_keys;
$all_texts = $reqest->col_texts;
foreach($all_texts as $key => $item) {
if (($key = array_search($key, $valid_keys)) === false) {
unset($all_texts($key));
}
}
答案 5 :(得分:0)
首先,我要感谢所有试图帮助我解决此问题的人 Wahyu Fadzar
。以下是我解决问题的方法:
我将刀片代码更改为:
@php $no = 0; @endphp //Wahyu Fadzar idea
@foreach($list as $columns)
@php $no+=1; @endphp //Wahyu Fadzar idea
<div class="input-group">
<span class="input-group-addon">
<input type="checkbox" name="cb[{{$no}}]" checked="checked"> //Wahyu Fadzar idea
</span>
<input type="text" name="customname[{{$no}}]" value="{{$columns}}" //Wahyu Fadzar ideaclass="form-control">
<input type="hidden" name="defaultname[{{$no}}]" value="{{$columns}}"> // Added
</div><!-- /input-group -->
@endforeach
Controller
public function export(Request $request) {
// defaultname that i added in my blade used here (explaination below)
$input = $request->except('_token');
foreach ($input['cb'] as $key => $value) {
if ($value== 'on') {
$getRealInput[$key] = $input['defaultname'][$key];
}
}
$products = Product::select($getRealInput)->get(); //getting table selected columns
Excel::create('products', function($excel) use($products, $request) {
$excel->sheet('sheet 1', function($sheet) use($products, $request){
//Wahyu Fadzar code used here to get selected columns data
$input = $request->except('_token');
foreach ($input['cb'] as $key => $value) {
if ($value== 'on') {
$getCustomInput[$key] = $input['customname'][$key];
}
}
$sheet->fromArray($products, null, 'A1', false, false);
$sheet->row(1, $getCustomInput);
});
})->export('csv');
return redirect()->back();
}
CSV
文件中删除我的输入,因为我取消选中它们,但是他们的数据仍然存在于我的文件中
所以我添加了&LT;输入类型=“隐藏”name =“defaultname [{{$ no}}]”value =“{{$ columns}}”&gt;
通过这个我将获得我的默认列名,即使我编辑它以进行导出。否则会返回错误,例如。我将title
列更改为name
,并显示there is no column name!
,因此我的title
列将保留title
以供选择查询。
我用它:
$ products = Product :: select($ getRealInput) - &gt; get();
CSV
文件的自定义输入名称,而不是默认的。&LT; input type =“text”name =“customname [{{$ no}}]”value =“ {{$ columns}}“class =”form-control“&gt;
转到:
if ($value== 'on') {
$getCustomInput[$key] = $input['customname'][$key];
}
在我的导出查询中。
希望它也能帮助别人。
谢谢大家。