在Laravel控制器中获取动态输入字段

时间:2019-02-04 03:12:30

标签: php laravel

在正常情况下,我们会获得诸如$request->input('input_name')之类的输入字段值,但在我的情况下,我的输入名称是动态的,可以是任何值(来自数据库)。

我想知道如何获取此类输入的数据?

代码

我的表单输入如下:

//1
<input type="radio" value="{{$opt->title}}" name="{{$opt->group->title}}">
//2
<select name="{{$opt->group->title}}" class="form-control">
//3
<input class="options-checkbox" type="checkbox" value="{{$opt->title}}" name="{{$opt->group->title}}[]">

因此每个输入基于数据库都有不同的名称,而我无法在控制器中预测其名称以获取其值。

测试DD

array:5 [▼
  "_token" => "QBY0WqF2WdqALxks22zjqpuBwplviHStBzTqzFzD"
  "COLORS" => "blue" //1
  "tester_group3ffhshg" => "title 33" //2
  "radio_group" => array:1 [▼
    0 => "hi" //3
  ]
  "quantity" => "1"
]

反正从这些输入中获取数据吗?

1 个答案:

答案 0 :(得分:0)

我不会在代码中回答(意思是,我不会重新创建整个代码),但是我可以为您提供可用于解决此问题的最佳逻辑。

首先,由于您的输入字段是动态的,因此您必须在前端控制这些输入。至少是Javascript。如果没有,您将需要它。

一旦前端有Javascript,请在​​加载时以及每当用户执行可能会更改字段的操作时,更新包含这些字段名称的数组变量。例如,如果页面加载时具有名为field_1field_2的字段,请将这些字段名称添加到一个名为request_fields的数组中。

此后,每次字段更改时进行更新。进行一些更改之后,假设现在您的控制器中有三个字段,分别为field_23field_34field_54,并且您将通过每个操作对其进行更新。

现在,在进行表单提交操作时,只需在表单的POST请求中追加您需要的字段数组即可,一切顺利!然后,您可以在后端扫描此数组,并根据需要获取请求数据!

关于控制器的一个简单示例可能看起来像这样:

foreach($request->requiredFields as $field){
    echo $request->{$field};
}

这将很容易解决您的问题,因为它易于实施且也易于理解!如果您还有其他问题,请告诉我。