Laravel具有相同名称的多个表单输入

时间:2017-01-03 12:11:21

标签: php laravel

我需要一些帮助。

我想在Laravel 5中做些什么: cron使用多个订单项/产品生成了一个请购单。我为每个创建的订单项设置了数量,供应商,部件号和名称字段。我可以完美地显示订单项。但是,我不确定如何更新它。我需要的是可以在整个订单项中编辑数量,一旦用户点击保存,控制器就应该分别更新每个订单项。

到目前为止我所拥有的:

我的刀片视图如下所示:

{!! Form::label('qty', 'Qty', ['class' => 'control-label']) !!}
{!! Form::number("line.$i.qty", $line->qty, ['class' => 'form-control']) !!}

当我在控制器中执行以下操作时:

$inputs = $request->all();
var_dump($inputs);

我可以看到数据,但我不确定如何从那里更新数据库。我猜猜某种类型的foreach陈述?

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

您需要解决存在哪些数量值并将值与其产品匹配。这可以有几种方式,这里有两种:

甲。在字段名称

中编码产品ID

请勿将表单字段"line.$i.qty"命名为"line." . $ids[$i] . ".qty"

如果您将产品ID存储在line.PID302314.qty数组

中,则会生成$ids等字段名称

然后,在处理发送的值时,扫描所有输入,如果输入与名称模式匹配,则从输入名称中提取产品ID并执行所需的数据库更新。

B中。发送ID作为隐藏值

为表单添加隐藏值:

{!! Form::hidden("ids", implode(",", $ids)) !!}

此隐藏值定义产品ID相对于表单中行的顺序。

然后,在处理发送的值时,您会从ids

中分解ID
$ids = explode(",", $request->input('ids'));

并制作一个for-cycle:

for ($i = 0; $i < count($ids); $i++)
{
    // Update product with id = $ids[$i] with 
    // qty value from input "line." . $i . ".qty"
}

答案 1 :(得分:0)

如果我理解你的话:

$i=0; // $index
$total_line = 10; // let say.. put the number you need 
while($i <= $total_line ){
    if ($request->has("line.$i.qty")){
        $string = $request->input("line.$i.qty");
        ...
    } 
}
祝你好运!