在laravel中获取选中的选项值

时间:2018-03-29 04:18:08

标签: php laravel

我的输入论坛包含2个选项checkboxinput字段。

  

我只想选中复选框<{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

更新2

要清楚它是如何工作的我包括截图

SEE IT

6 个答案:

答案 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();
    }

说明

  1. 我之前遇到过问题,当我使用 Wahyu 代码时,它会从CSV文件中删除我的输入,因为我取消选中它们,但是他们的数据仍然存在于我的文件中 所以我添加了
  2.   

    &LT;输入类型=“隐藏”name =“defaultname [{{$ no}}]”value =“{{$ columns}}”&gt;

    通过这个我将获得我的默认列名,即使我编辑它以进行导出。否则会返回错误,例如。我将title列更改为name,并显示there is no column name!,因此我的title列将保留title以供选择查询。

    我用它:

      

    $ products = Product :: select($ getRealInput) - &gt; get();

    1. 我在导出部分中使用了Wahyu代码,以获取我的CSV文件的自定义输入名称,而不是默认的。
    2.   

      &LT; input type =“text”name =“customname [{{$ no}}]”value =“   {{$ columns}}“class =”form-control“&gt;

      转到:

      if ($value== 'on') {
        $getCustomInput[$key] = $input['customname'][$key];
      }
      

      在我的导出查询中。

      希望它也能帮助别人。

      谢谢大家。